我正在做一个用Spring框架制作的项目。我已经多年没有接触过Java了,这对我来说都是全新的。该项目具有以下UI控制器,显示产品信息:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
import java.util.ArrayList;
@Controller
public class UiController {
private ProductService productService;
private LocationService locationService;
private InventoryService inventoryService;
private CartService cartService;
public UiController(
ProductService productService,
LocationService locationService,
InventoryService inventoryService,
CartService cartService) {
this.productService = productService;
this.locationService = locationService;
this.inventoryService = inventoryService;
this.cartService = cartService;
}
@GetMapping("/")
public String home(Model model) {
model.addAttribute("products", productService.getAllProducts());
return "index";
}
@GetMapping("/brand/{brand}")
public String brand(Model model, @PathVariable String brand) {
model.addAttribute("products", productService.getProductByBrand(brand));
return "index";
}
@GetMapping("/product/{productId}")
public String product(Model model, @PathVariable String productId) {
Product prod = productService.getProduct(productId);
ArrayList<Product> ps = new ArrayList<Product>();
ps.add(prod);
model.addAttribute("products", ps);
return "index";
}
}
为了配合这个控制器,我有一个html模板:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Product Listing</h1>
<table>
<tr>
<th>PRODUCT ID</th>
<th>PRICE</th>
<th>DESCRIPTION</th>
<th>BRAND</th>
</tr>
<tr th:each="product : ${products}">
<td th:text="${product.getProductId()}"/>
<td th:text="${product.getPrice()}"/>
<td th:text="${product.getDescription()}"/>
<td th:text="${product.getBrand()}"/>
</tr>
</table>
</body>
</html>
当没有产品时——这意味着如果我的ArrayList
产品的
size()
为0,我想显示404。
我怎么能这么做?
从你的url来看,你似乎在寻找一个具有给定id的特定产品。从这个请求返回一个模板,甚至将其放入一个列表(总是有一个值)都没有多大意义。对于异步,您可以编写:
@GetMapping("/product/{productId}")
public ResponseEntity<Product> product(Model model, @PathVariable String productId) {
Product prod = productService.getProduct(productId);
if(prod == null) {
return new ResponseEntity<Product>(null, HttpStatus.NOT_FOUND);
} else {
return new ResponseEntity<Product>(prod, HttpStatus.OK);
}
}
如果您真的需要返回一个模板,您可以在模型中放置一个状态变量,并在客户端检查它的状态。
或者如果你想重定向,只做检查和建立返回字符串符合。
@GetMapping("/product/{productId}")
public String product(Model model, @PathVariable String productId) {
Product prod = productService.getProduct(productId);
if(prod == null) {
return "errors/404";
} else {
return "index";
}
}
我有一个实现Spring Security和Spring OAuth2安全的项目。当我请求访问令牌时,它工作得很好,但当我使用访问令牌请求资源时,我得到了“在SecurityContext中没有找到身份验证对象”。 我的项目的SecurityContext是: 我使用http://localhost:8060/oauth/token请求令牌?grant_type=password&client_i
我正在使用一个双端队列(java.util.Dequeue),希望在队列中找到一个对象并返回它。 我目前正在使用方法检查队列是否包含对象,但不知道如何获取找到的对象的实际实例。正在搜索的实例不是同一个实例,因为我正在重写方法来测试类变量子集的相等性。 如果不可能使用退出来做到这一点,那么我应该用什么来代替呢?我需要将对象推送到列表的两端,并从一开始就将其删除。显然能够搜索一个对象并得到它的实例化。
我以为我的授权实现已经完成,但是当试图检索用户详细信息对象时,我得到的只是用户名。 我正在使用oauth,并提供以下详细信息。 配置AuthenticationManager: 完成后,我可以调试到我的userDetailsService: 这完成得很好,我的客户端得到了JWT。但是我在调试以后的控制器方法时发现了以下问题。 在本例中,injectedUser=null,auth是一个OAuth2
我使用mysql存储过程来检索对象列表。这可能吗? 我在看这篇文章 问题: > 如何使用结果集检索select语句中的对象列表? 如何将结果集映射到对象列表? CREATE DEFINER=@PROCEDURE(ININT,OUTINT,OUTINT,OUTVARCHAR(50),OUTVARCHAR(50),OUTFLOAT 内部连接(从rate中选择aid,r.rate,re.country_
我有下面的,它的返回类型是或。中的响应实体是基于的这些返回类型形成的。 如何: 1。设计以返回不同类型的 2。使根据其接收形成 这是控制器