我有一个自定义的参数转换器&Jackson映射器处理Spring控制器输入上的Joda DateTime
。
问题是,如果日期的格式不正确,服务器会给出400 Bad Request
,因为Joda格式化程序在转换过程中抛出了IllegalArgumentException
。
我可以让转换器在转换失败时返回null(用户键入的错误日期模式),但这会在两种情况下给我null:
- 用户将字段留空(在可选字段中可以)
- 用户提供的日期格式不正确(从不确定)
如何将这些场景区分为"允许null(空字段),但如果不为空,请检查日期格式"
背景:字段在POJO中表示为DateTime
,在@Controller
中接收为@RequestBody @Valid
,因为它是AJAX发布的。
表格POJO:
class MyForm {
@NotEmpty
private String name;
private DateTime expireOn; // JODA, optional but won't bad-format as null.
// getters, setters
}
我认为你应该像下面这样使用@ScriptAssert:
@ScriptAssert(lang = "javascript", script = "_this.validateExpireOn(_this.expireOn)")
public class MyForm{
public boolean validateExpireOn(Object obj){
// here you check your expireOn Object if null or not , if not null check date format
// this method should return boolean as if valid or not valid
}
private DateTime expireOn;
}
希望能有所帮助。