在处理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();
}
}它在提交表单后抛出一个异常:
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:469) org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:818) org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778) org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759) org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(:
javax.servlet.ServletException: BeanUtils.populate BeanUtils.populate java.lang.IllegalArgumentException:无法调用com.epam.testapp.model.News.setDate -参数类型不匹配org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778)org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(( org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677) ) PropertyUtilsBean.java:1648)
因为返回getter和接受setter参数类型之间的不匹配,这个struts 1表单的基础是这个代码不能工作吗?我该如何解决这个问题?我根本不想让方法命名为setStringDate(String stringDate(){...},并在每一页上考虑该调用哪种方法:
发布于 2011-11-14 07:21:59
日期对象不能是struts中的属性,因为日期格式可能有所不同(取决于规范)。有些可能有dd-MM-yyyy、dd-MMMM-yy等。
我建议你拥有一项财产:
private String date;
public String getDate() { return date; }
public void setDate(String date) { this.date = date; }在操作中,将日期字符串转换为Date对象。
发布于 2011-11-14 07:06:31
据我所知,在form .Try中,重载的方法不能很好地用不同的方式命名这两种方法,而且我认为您会有更好的运气。
https://stackoverflow.com/questions/8118279
复制相似问题