Spring MVC表单验证日期字段
问题内容:
我有一个表单字段,应将其转换为Date对象,如下所示:
<form:input path="date" />
我需要通过以下方式进行验证:
-
如果用户将此字段留空。我需要设置一些默认日期。
-
如果用户设置了不可接受的格式,我需要提出一个错误。
问题是我可以满足第一或第二要求。
- 我可以注册 PropertyEditor 并在日期不可接受的情况下将null设置为空,并且在该字段为null的情况下设置一些默认日期。但是用这种方法我不能满足第二个要求,因为如果我将其转换为null,我将无法向用户注册第二个错误。
- 我可以设置 @DateTimeFormat(pattern =“ dd-MMM-yyyy”) 批注并提供适当的typeMismatch错误,但是当用户在此字段中保留空值时,它仍会返回此错误。
解决这个问题有什么好的办法吗?
问题答案:
如果您将从Spring MVC验证器转到Hibernate,则有一种方法可以做到这一点。没什么大不了的,因为Hibernate验证器可以与Spring
Validator界面很好地配合使用(也可能对支持组的SmartValidator接口很感兴趣)。
之后,您可以
@NotNull
在日期字段上指定注释。
在属性文件中,只需添加
NotNull.[formName].[dateField]
=如果没有发送日期,
typeMismatch.[formName].[dateField]
则将显示此消息=如果spring无法将输入转换为日期对象,则将显示此消息(格式验证错误)
对于格式检查,您可以使用CustomDateEditor
。
使用此解决方案,您将在指定的每种情况下收到预期的验证错误消息。