BeanResult'studentAge'的BindingResult或普通目标对象都不能用作请求属性

问题描述

我正在使用Spring Boot并尝试对我的模型StudentDTO进行Java验证:

@ToString
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class StudentDTO {
@Id
private int studentId;
@NotNull
@Size(min=6,max=25,message = "Name false")
private String studentName;
@NotNull
@Size(min = 2,max = 30)
private String studentSurname;
@Min(5)
private int studentAge;
@Min(5)
private int entryYear;
@Min(5)
private int graduateYear;
@NotNull
@Size(min = 1)
private String facultyName;
@NotNull
@Size(min = 1)
private String groupName;
}

还有StudentController

   @PostMapping("successStudentAddition")
public String addStudent(@ModelAttribute("student") @Validated StudentDTO studentDTO,Errors errors,Model model) {

    if (errors.hasErrors()) {
        model.addAttribute("student",new Student());
        return "/studentViews/addStudent";
    }

    Student student = new Student(studentDTO.getStudentId(),studentDTO.getStudentName(),studentDTO.getStudentSurname(),studentDTO.getStudentAge(),studentDTO.getEntryYear(),studentDTO.getGraduateYear(),studentDTO.getFacultyName(),groupService.getGroupIdByName(studentDTO.getGroupName()));
    studentService.addStudent(student);
    return "/studentViews/successStudentAddition";
}

当我到达html文件addStudent时:

<body>
<div align="center">


<form action="/studentViews/successStudentAddition" method="post" modelAttribute="student">
    Name:<br>
    <input type="text" name="studentName" path="studentName">
    <br><br>

    Surname:<br>
    <input type="text" name="studentSurname" path="studentSurname">
    <br><br>

    Age:<br>
    <input type="text" name="studentAge" path="studentAge">
    <br>
    <span th:errors="*{studentAge}" class="error"></span>
    <br>

    Entry Year:<br>
    <input type="text" name="entryYear" path="entryYear">
    <br><br>

    Graduate Year:<br>
    <input type="text" name="graduateYear" path="graduateYear">
    <br><br>

    Faculty:<br>
    <input type="text" name="facultyName" path="facultyName">
    <br><br>

    Group:<br>
    <input type="text" name="groupName" path="groupName">
    <br><br>

    <input type="submit" value="Send">
</form>

我在此行的标题中写了一个错误: <span th:errors="*{studentAge}" class="error"></span>中的addStudent.html

错误堆栈跟踪:

Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'studentAge' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.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.processor.SpringErrorsTagProcessor.doProcess(SpringErrorsTagProcessor.java:65) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
... 63 common frames omitted
2020-10-04 19:33:22.044 ERROR 22460 --- [nio-8081-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/studentViews/addStudent.html]")] with root cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name
'studentAge' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153) ~[spring-webmvc-
.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.thymeleaf.spring5.context.webmvc.SpringWebMvcThymeleafRequestContext.getBindStatus(SpringWebMvcThymeleafRequestContext.java:227) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...