首页 > 解决方案 > Spring boot:java.lang.IllegalStateException:Bean 名称“edit”的 BindingResult 和普通目标对象都不能用作请求属性

问题描述

我正在开发我的“编辑”网站,它可以更改现有网页上的数据。我收到此错误,在我的代码中找不到问题。我的控制器:

    @PostMapping("editKursInfo")
    public String editKursInfo(Model model,
            @Valid @ModelAttribute("edit") Kurs kurs,
            BindingResult bindingresult)
        {
        if (bindingresult.hasErrors()) {
            model.addAttribute("edit", kurs);
            return "editKursInfo";
        }
        model.addAttribute("kurs", kurs);
     // model.addAttribute("edit", kurs);
        data.saveKurs(kurs);
        return "editKurs";
        }

百里香叶:

                <form action="editKursInfo" method="POST"
                th:object="${edit}">
                <span th:text="${kurs.kursName}" id="kursNameSpan" style=" display: none;"></span>                                                                  
                <input th:field="*{kursName}"                                   
                type="text"
                align="left"                                
                class="form-control"
                style="width:250px;"               
                th:errorclass="is-invalid"
                id="kursNameInput"
                value=""/><br>
                <div th:if="${#fields.hasErrors('kursName')}" th:errors="*{kursName}" class="invalid-feedback">          </div>    
                          

Javascript:

            <script type="text/javascript">
                var value = $("#kursNameSpan").text();
                var lower = $("#kursNameInput").val(value);        
            </script>

错误部分:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'edit' available as request attribute
    at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153) ~[spring-webmvc-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903) ~[spring-webmvc-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.thymeleaf.spring5.context.webmvc.SpringWebMvcThymeleafRequestContext.getBindStatus(SpringWebMvcThymeleafRequestContext.java:227) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:306) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.util.FieldUtils.getBindStatus(FieldUtils.java:253) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.util.FieldUtils.getBindStatus(FieldUtils.java:227) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.util.FieldUtils.checkErrors(FieldUtils.java:212) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.util.FieldUtils.hasErrors(FieldUtils.java:71) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.expression.Fields.hasErrors(Fields.java:58) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]

标签: javaspring-bootthymeleaf

解决方案


在实际显示页面之前,您必须edit在模型上设置属性。因此,您需要有一个 GET 映射方法,如下所示:

@GetMapping(value = "/editKursInfo")
public String viewEditKursPage(Model model) {
   Kurs kurs = new Kurs();
   model.addAttribute("edit", kurs);
   return "editKursInfo";
}

推荐阅读