我有一个自定义参数转换器& Jackson映射器在Spring控制器输入上处理Joda DateTime
。
问题是,如果日期以错误的格式提供,那么服务器会给出400 Bad Request
,因为转换期间Joda格式化程序会抛出IllegalArgumentException
。
我可以让转换器在失败的转换(用户输入的错误日期模式)上返回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
}
答案 0 :(得分:0)
我认为您应该使用@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;
}
希望能帮助。