Java 表单提交后IllegalArgumentException返回消息
我有一个包含表单元素的UIPanel。单击submit,表单将验证所有字段,如果它们都有效,则继续将字段值插入数据库。如果DB返回重复密钥异常,我将显示一条消息,告诉用户更新字段(请参阅) 消息会显示,表单在大部分情况下都会正确加载,但当Calendar元素抛出时会出现问题Java 表单提交后IllegalArgumentException返回消息,java,jsf,primefaces,Java,Jsf,Primefaces,我有一个包含表单元素的UIPanel。单击submit,表单将验证所有字段,如果它们都有效,则继续将字段值插入数据库。如果DB返回重复密钥异常,我将显示一条消息,告诉用户更新字段(请参阅) 消息会显示,表单在大部分情况下都会正确加载,但当Calendar元素抛出时会出现问题 java.lang.IllegalArgumentException: Cannot format given Object as a Date 如果我提交表单,并且表单在验证期间发现错误(与此日历字段相关或无关),则没有
java.lang.IllegalArgumentException: Cannot format given Object as a Date
如果我提交表单,并且表单在验证期间发现错误(与此日历字段相关或无关),则没有问题,只有在验证完成后,我添加此消息,表单才会引发此异常
下面是我如何生成日历的代码,但我不确定为什么它只会在这个场景中抛出错误,而不会在其他场景中抛出错误
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);
}
}
假设错误指向以下行是否安全:String defaultDate=displayFormat.format(dbFormat.parse(defaultVal))?defaultVal是如何声明和分配的?当错误发生时,请查看它在此行之前的值。不,这实际上可以编译。我有一些日志,我删除后,一切编译良好,一直到结束的方法。。。。当页面尝试呈现时会出现错误。defaultVal是页面前面声明的字符串。控制台显示以下错误:
severy:error Rendering View[/common/copy.xhtml]
java.lang.IllegalArgumentException:无法将给定对象格式化为日期