如何在Spring MVC中仅对整个模型的控制器中的模型属性进行验证

时间:2017-02-01 06:36:01

标签: java validation spring-mvc

我是springMVC的新手,如果这是一个简单的问题,请原谅我。 我在网上搜索了很多关于此事的内容。

在春天,我们可以像这样在控制器中对模型的属性进行修改。例如

@RequestMapping(value = "/xyz", method = RequestMethod.POST)
public String submit(@Valid @ModelAttribute("abc") Abc abc, BindingResult result, ModelMap model)
 {
        // logic
 }

我的模特'Abc'有5个属性,比如这个

    public class Abc{

     @NotBlank
     @size(min=3)
     @Phone
     String property1;

     @NotNull
     String property2;

     .....
    }

@Phone是我的自定义验证器。

由于@Valid @ModelAttribute("abc") Abc abc,该控制器将验证模型'Abc'的所有5个属性。

但我不想要这个。我只想验证'property1'。

这怎么可能?

1 个答案:

答案 0 :(得分:0)

如果您需要在第一次验证所有5后才更新一个属性(我可以从您的评论中理解),您可以做的是当您更新此单个属性时,让应用程序转到另一个RequestMapping,这样您就可以不要只为这个属性调用@Valid而是一个验证器。

一个例子可能更好: (这是您的提交代码)

@RequestMapping(value = "/xyz", method = RequestMethod.POST)
public String submit(@Valid        @ModelAttribute("abc") Abc abc,   BindingResult result, ModelMap model)
 {
    // logic
 }

当您从其他视图进行更新时:(表单的操作将指向此)

@RequestMapping(value = "update", method = RequestMethod.POST)
 Public String    update(@ModelAttribute("abc" Abc abc, BindingResult br, ModelMap model){
 //Custom validation of single property
 /*logic
 ..*/

或许你想用同样的方法更新这个属性?因此,只需为您需要的属性创建一个自定义验证器,并在需要时调用它。

要创建自定义验证程序,您可以创建一个扩展“验证程序”的新类。春天。