【问题标题】:java.lang.IllegalStateException: Neither BindingResult nor plain target object available as request attributejava.lang.IllegalStateException:BindingResult 和普通目标对象都不能用作请求属性
【发布时间】:2014-05-08 14:46:18
【问题描述】:

当我尝试提交(Spring)表单查询时:

我没有收到消息。

控制器

@RequestMapping(value = "beerbean", method = RequestMethod.GET)
public String showForm(@ModelAttribute("beerbean") BeerBean beerbean){
    return "addbeerform";
}



@RequestMapping(value = "beerbean", method = RequestMethod.POST)
public String newBeer(Model model, @Valid @ModelAttribute BeerBean beerbean,
        BindingResult bindingResult){
    if(bindingResult.hasErrors()){
        return "addbeerform";
    }
    model.addAttribute("beani", beerbean);
    return "showBeer";
}

addbeerform.jsp

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<form:form commandName="beerbean" action="${pageContext.request.contextPath}/app
     /beerbean" method="POST">

     <form:input path="name" /><form:errors path="name" /><br/>
     <form:input path="id" /><form:errors path="id" /><br/>

     <input type="submit">
</form:form>

当字段中没有错误时,它可以工作并转到“showBeer”,但是当有错误时它就会崩溃。我也有实现 Serializable 等的 BeerBean 类,但不认为有解决方案(变量在表单中写成参数,输入 path="name" 转到私有字符串名称等)。

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    我建议明确指定模型属性的名称:

    public String newBeer(
        Model model,
        @Valid @ModelAttribute("beerbean") BeerBean beerbean,
        BindingResult bindingResult
    ) {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 2014-05-23
      • 2015-08-31
      相关资源
      最近更新 更多