【发布时间】:2014-12-03 02:46:06
【问题描述】:
我有一个自定义参数转换器和 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
}
【问题讨论】:
-
请发布您的 POJO
-
@Amrola 添加了 POJO 表单
-
你也使用休眠验证吗?
-
@amrola 是的。也许在 Joda 转换期间某些错误配置给了我 400 Bad Request?它应该默认为绑定结果错误还是 400 代码? (在我的自定义 Spring 转换器中抛出 IllegalArgumentException)
标签: java spring spring-mvc jodatime bean-validation