目前我正经历着相当糟糕的问题,并且找不到摆脱它的方法。我在我的项目中使用了Thymeleaf和Spring Boot。我在这里和其他论坛上查看了各种主题,但没有解决上面的问题。我有一个视图,它有两个,而不是嵌套的表单,有单独的提交按钮和单独的操作:
<form id="bidForm" th:action="@{'/auction/bid/' + ${auctionDto.id}}"
th:object="${bidDto}" method="post">
/* more html code here */
</form>
<form id="buyoutForm" th:action="@{'/buyout/confirm-buyout'}"
th:object="${buyoutDto}" method="post">
/* more html code here */
</form>视图是通过以下方法在控制器中生成的:
@GetMapping("/get/{id}")
public ModelAndView getAuction(@PathVariable String id) {
ModelAndView modelAndView = new
ModelAndView(Templates.AuctionTemplates.ITEM);
modelAndView.addObject("auctionDto", getAuctionService.getOne(id));
modelAndView.addObject("bidDto", new BidDto());
modelAndView.addObject("buyoutDto", new BuyoutDto());
return modelAndView;
}在th:action中指定的方法映射位于两个不同的控制器中。具有“bidForm”操作的控制器:
@Controller
@RequestMapping("/auction")
public class AuctionController {
@PostMapping("/bid/{id}")
public ModelAndView bid(@PathVariable String id,
@ModelAttribute("bidDto")
@Valid BidDto bidDto, BindingResult bindingResult, Principal principal) {
/* more code here */
}
}至于"buyoutForm":
@Controller
@RequestMapping("/buyout")
public class BuyoutController {
@PostMapping("/confirm-buyout")
public ModelAndView confirmBuyout(@Valid @ModelAttribute("buyoutDto")
BuyoutDto buyoutDto) {
ModelAndView modelAndView = new ModelAndView();
return modelAndView;
}
}现在,问题来了:当我使用相应的按钮提交"bidForm“时,我得到一个错误:
Neither BindingResult nor plain target object for bean name "buyoutDto"我不知道为什么Spring在"bid“方法中需要一个"BuyoutDto”类的对象。这是我第一次遇到这个问题。你能帮我解决这个问题吗?你好,卢卡斯。
发布于 2018-01-12 23:00:05
我认为这个错误的发生是因为在您的bid方法中没有返回对象buyoutDto。当您从该方法返回时,是否再次转到同一页面(具有两个表单的页面)?
例如,您的代码应如下所示
@PostMapping("/bid/{id}")
public ModelAndView bid(@PathVariable String id,
@ModelAttribute("bidDto")
@Valid BidDto bidDto, BindingResult bindingResult, Principal principal) {
/* more code here */
modelAndView.addObject("buyoutDto", new BuyoutDto());
}https://stackoverflow.com/questions/48223932
复制相似问题