我是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'。
这怎么可能?
答案 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
..*/
或许你想用同样的方法更新这个属性?因此,只需为您需要的属性创建一个自定义验证器,并在需要时调用它。
要创建自定义验证程序,您可以创建一个扩展“验证程序”的新类。春天。