【发布时间】:2011-11-14 07:00:19
【问题描述】:
我在处理java.util.Date 的输入请求参数(当然是字符串类型)时遇到问题。我认为添加到我的 bean 中的以下代码可能会解决这个问题,但我错了:
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public void setDate(String dateString) {
try {
date = DateFormat.getDateInstance().parse(dateString);
} catch (ParseException e) {
date = new Date();
}
}
提交表单后抛出异常:
javax.servlet.ServletException: BeanUtils.populate org.apache.struts.util.RequestUtils.populate(RequestUtils.java:469) org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:818) java.lang.IllegalArgumentException: Cannot invoke com.epam.testapp.model.News.setDate - argument type mismatch org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778) org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759) org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648) org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
这是因为返回 getter 和接受 setter 参数类型不匹配而导致代码无法工作的 struts 1 形式的基本原理吗?我怎么解决这个问题 ?我根本不想创建像setStringDate(String stringDate(){...} 这样命名的方法,并在每个页面上都考虑我应该调用哪个方法:(
【问题讨论】:
标签: java string date actionform struts1