Spring MVC表单validation:如何使字段可选?
我有一个表单(Spring 3 MVC项目),我正在使用DTO(数据传输对象)进行数据validation。 数据被发送到控制器,我正在使用BindingResult.hasErrors()
方法和适当的注释检查它的有效性。 我要简化这里,因为我遇到了数字字段的问题。
DTO:
public class Item { private String discount; @Digits(integer = 15, fraction = 2) public String getDiscount() { return discount; } }
如果我提交没有在discount
字段中写入的表单, BindingResult.hasErrors()
将返回带有消息的true
numeric value out of bounds (. expected)
。
我想要实现的是discount
字段可以为空,但如果在其中写入某些内容,它应该是@Digits
注释提供的数字格式。 我怎样才能做到这一点?
您需要做的是配置Spring以将空String转换为null 。 您可以通过在FormController initBinder
方法中注册StringTrimmerEditor
来实现此目的:
@InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); }
StringTrimmerEditor一个
然后由parsifal指定, @Digits
Digits将null
值视为valide。
您可以创建自定义validation注释。 可以在spring文档中找到解释: http ://static.springsource.org/spring/docs/3.0.0.RC3/reference/html/ch05s07.html,par 5.7.2.2