我有一个包含表单元素的UIPanel。单击提交时,表单将验证所有字段,如果它们都有效,则继续将字段值插入数据库。如果数据库返回重复键异常,则会显示一条消息,告知用户更新该字段(请参阅http://goo.gl/jOzZGG)。
消息显示,表单大部分正确加载,但Calendar元素抛出时出现问题
java.lang.IllegalArgumentException: Cannot format given Object as a Date
如果我提交表单并且表单在验证期间发现错误(与此Calendar字段相关或无关),则只有在验证完成后才会出现问题,并且我添加此消息是否会引发此异常。
我如何生成日历的代码如下,但我不确定为什么它只会在这种情况下抛出错误,而不是其他任何错误。
Calendar input = new Calendar();
input.setPattern("MM/dd/yyy");
input.setId(inputId);
input.setStyleClass(inputId);
input.setShowOn("button");
input.setNavigator(true);
input.setValueBinding("value", vb);
if(defaultVal != null && !defaultVal.equals("")){
SimpleDateFormat dbFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat displayFormat = new SimpleDateFormat("MM/dd/yyyy");
String defaultDate = displayFormat.format(dbFormat.parse(defaultVal));
Date date = new Date();
date = displayFormat.parse(defaultDate);
if(required != null && !required.equals("") && !required.equals(",") && mandatory.length > 1){
if(mandatory[1].equalsIgnoreCase("Y")){
input.setRequired(true);
input.setRequiredMessage("Please enter a "+inputLabel+".");
HtmlMessage message = new HtmlMessage();
message.setFor(inputId);
message.setStyleClass("errorMessage");
div.getChildren().add(input);
div.getChildren().add(message);
}else{
input.setRequired(false);
div.getChildren().add(input);
}
}else{
div.getChildren().add(input);
}
}