当我在结果网页中提交带有空日期的表单时显示验证错误时遇到问题:
Failed to convert property value of type java.lang.String to required type
java.util.Date for property dateFin; nested exception is
java.lang.IllegalArgumentException: Could not parse date: Unparseable date: ""
我的控制器如下所示:
@Controller
@SessionAttributes
@Lazy
public class MyController extends AbstractMVPAction {
@RequestMapping(value = "/secured/cp/saveProgram")
public String enregistrerProgramme(@ModelAttribute Program program,
BindingResult bindingResult, ModelMap model){
if(bindingResult.hasErrors()){
model.put("program", program);
return "/secured/cp/showProgram"
}else{
// ... saves the programme
model.put("program", null);
return "/secured/cp/backToOtherPage"
}
}
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new CustomDateEditor(
new SimpleDateFormat("dd/MM/yyyy"), false));
}
}
当我调试我的方法时,我可以看到我的对象很好,我所做的修改很好,日期为空,但 bindingResult.hasErrors() 返回 true,据我说它不应该。
我曾经在 Program 对象和 @Valid 注释中有一些验证注释,但我将它们全部删除,但仍然存在问题。
我读过很多类似的问题,每次解决方案都是@InitBinder/CustomDateEditor。所以它就在那里,我想它正在工作,日期以我想要的方式显示(在我添加它之前不是这种情况),如果它不为空,我可以提交它们。
先谢谢了,我开始发疯了...