首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在包含多个表单的视图上提交表单时,Spring会出现“nor nor object for bean name”错误

在包含多个表单的视图上提交表单时,Spring会出现“nor nor object for bean name”错误
EN

Stack Overflow用户
提问于 2018-01-12 18:10:59
回答 1查看 735关注 0票数 0

目前我正经历着相当糟糕的问题,并且找不到摆脱它的方法。我在我的项目中使用了Thymeleaf和Spring Boot。我在这里和其他论坛上查看了各种主题,但没有解决上面的问题。我有一个视图,它有两个,而不是嵌套的表单,有单独的提交按钮和单独的操作:

代码语言:javascript
复制
<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>

视图是通过以下方法在控制器中生成的:

代码语言:javascript
复制
@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”操作的控制器:

代码语言:javascript
复制
@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":

代码语言:javascript
复制
@Controller
@RequestMapping("/buyout")
public class BuyoutController {

    @PostMapping("/confirm-buyout")
    public ModelAndView confirmBuyout(@Valid @ModelAttribute("buyoutDto") 
    BuyoutDto buyoutDto) {
        ModelAndView modelAndView = new ModelAndView();
        return modelAndView;
        }
   }

现在,问题来了:当我使用相应的按钮提交"bidForm“时,我得到一个错误:

代码语言:javascript
复制
Neither BindingResult nor plain target object for bean name "buyoutDto"

我不知道为什么Spring在"bid“方法中需要一个"BuyoutDto”类的对象。这是我第一次遇到这个问题。你能帮我解决这个问题吗?你好,卢卡斯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-12 23:00:05

我认为这个错误的发生是因为在您的bid方法中没有返回对象buyoutDto。当您从该方法返回时,是否再次转到同一页面(具有两个表单的页面)?

例如,您的代码应如下所示

代码语言:javascript
复制
@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());
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48223932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档