gpt4 book ai didi

java - Spring MVC 3.0 休息问题

转载 作者:行者123 更新时间:2023-12-04 06:55:47 24 4
gpt4 key购买 nike

我是第一次尝试 Spring MVC 3.0 并且喜欢让它成为 RESTfull。

这是我的 Controller :

    @Controller
@RequestMapping(value = "/product")
@SessionAttributes("product")
public class ProductController {

@Autowired
private ProductService productService;

public void setProductValidator(ProductValidator productValidator, ProductService productService) {
this.productService = productService;
}

@RequestMapping(method = RequestMethod.GET)
public Product create() {
//model.addAttribute(new Product());
return new Product();
}

@RequestMapping(method = RequestMethod.POST)
public String create(@Valid Product product, BindingResult result) {
if (result.hasErrors()) {
return "product/create";
}
productService.add(product);
return "redirect:/product/show/" + product.getId();
}

@RequestMapping(value = "/show/{id}", method = RequestMethod.GET)
public Product show(@PathVariable int id) {
Product product = productService.getProductWithID(id);
if (product == null) {
//throw new ResourceNotFoundException(id);
}
return product;
}

@RequestMapping(method = RequestMethod.GET)
public List<Product> list()
{
return productService.getProducts();
}

}

我有两个问题。

我相信约定优于配置,因此我的 View 位于 jsp/product/文件夹中,并被称为 create.jsp 、 list.jsp 和 show.jsp 在我添加 @PathVariable 属性之前,它工作得相对较好。当我点击 root/product/show/1 时,出现以下错误:
../jsp/product/show/1.jsp"未找到 如何告诉此方法使用 show.jsp View ?

如果我不在类级别添加 RequestMapping ,我的 show 方法将映射到 root/show 而不是 root/owner/show 我该如何解决这个问题?我想避免使用类级别的 RequestMapping。

最佳答案

查看手册中关于“Supported handler method arguments and return types”的部分。

基本上,当您的 @RequestMapping方法只返回一个对象,然后 Spring 将其用作单个模型属性,并且我猜想尝试使用请求 URL 作为 View 名称的基础。

从同一方法返回您想要的 View 和数据的最简单方法可能是让该方法返回 ModelAndView ,因此您可以显式指定 viewName 和模型数据。

关于java - Spring MVC 3.0 休息问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com