有 DTO 时如何在 Spring MVC 中进行验证?

jkfe

我有一个 person 类和一个 personList DTO。DTO 用于将人员对象列表绑定到视图。用户可以编辑一个或多个人,然后单击保存以一次保存所有这些人的编辑。现在我想验证新输入。问题是控制器代码“bindingResults.hasErrors()”没有返回用户输入错误。我认为这是因为中间有 personList DTO。似乎它只是检查 personList 类中的错误,而不是像它应该的那样检查 person 类中的错误。如何解决?

模型

public class Person implements Serializable{

    private static final long serialVersionUID = 1L;

    @NotEmpty(message="Name must be filled.")
    private String name;

    @Min(value=1900, message="Year is invalid")
    @Max(value=2100, message="Year is invalid")
    private int year;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

}

DTO

public class PersonList {
    
    private List<Person> personList;

    public List<Person> getPersonList() {
        return personList;
    }

    public void setPersonList(List<Person> personList) {
        this.personList = personList;
    }
}

看法

<form action="person" method="post" th:object="${personListBind}">
<th:block th:each="person, itemStat : *{personList}">

    Name:
    <input type="text" th:field="*{personList[__${itemStat.index}__].name}" />

    Year:   
    <input type="text" th:field="*{personList[__${itemStat.index}__].year}" />
</th:block>
<input type="submit" name="btnSaveEdit" value="Save"/>

控制器

@RequestMapping(value = "/person", method = RequestMethod.POST)
public ModelAndView editPerson(
   @Valid @ModelAttribute PersonList personList, 
   BindingResult bindingResults) {
        
        
   if(bindingResults.hasErrors()){
      //perform action
   }
jkfe

找到了解决方案。一个简单的改变。只需要在 DTO 类中添加 @Valid 即可。这是唯一需要更新的行: private List<@Valid Person> personList;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Spring MVC中进行验证处理

避免在更新时已经存在验证,并在Spring MVC中进行更新

DTO 未通过(spring mvc)

如何使用 Spring MVC 在 Hibernate 中进行连接查询

如何在sencha extjs mvc应用程序中进行验证

在控制器或服务层中的Spring MVC中进行验证?

在应用程序服务中进行验证以检查DTO的ID是否有效或dto的属性之一是否为空白是不好的做法吗?

如何按顺序检查多个Spring DTO验证?

在Spring中进行表单验证

C#MVC5在具有列表的模型中进行验证

Automapper -> DTO to Entity - 如何在映射时触发 Setter 验证

带有注释的Spring MVC验证

在断言中进行验证时,未调用模拟的MVC会话及其方法

在MVC5中进行验证时,将数据保留在ViewModel中

Spring MVC:如何执行验证?

在服务层中进行验证时测试Web层-Spring Boot测试

如何在 ASP.NET MVC5 中的视图模型中进行字符串“不喜欢”验证?

如何在ASP.NET MVC应用程序中进行列表框的客户端验证

具有Spring Session / Redis的Spring Zuul API网关在同一请求中进行身份验证和路由

如何在Spring MVC中使用带有Freemarker的消息?

JSR-303 / Spring MVC-使用组有条件地进行验证

如何在InertiaJS中进行表单验证

如何在Javax约束验证中进行OR?

如何在PowerShell中进行验证过程?

如何在$ ionicPopup中进行验证?

如何在5.2中进行验证?

如何在Android应用中进行验证

如何在Django中进行分层验证?

如何在React中进行表单验证?