我在處理輸入請求參數(當然是String類型)到java.util.Date
時遇到問題。我認爲下面的代碼添加到我的豆可能會解決這個問題,但我錯了:Struts中的處理日期1 ActionForm
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();
}
}
它拋出submiting表格後的異常:
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)
這是根本的支柱1的形式,該代碼將不會工作,因爲返回的getter和接受setter參數類型不匹配?我怎麼解決這個問題 ?我根本不需要製作名爲setStringDate(String stringDate(){...}
的方法,並在每個頁面上考慮應該調用哪種方法:(
這就是我所做的。只是想確定沒有更好的解決方案:)但仍然有趣的問題:爲什麼invoke()無法確定正確的重載方法。我不知道爲什麼struts開發者錯過了這種情況。 –
這是因爲Struts無法將輸入的日期轉換爲沒有轉換模式的相應'Date'對象。 –
嗯,我不是要求它解析日期。我的意思是我不明白爲什麼沒有適當的setter方法的動態調用。 RequestProcessor在請求時具有特定請求參數的字符串值。爲什麼不能選擇更適合的方法:設置...(日期)或設置...(字符串)。我不是要求解析Date,我只是想對我實現一些自然而然的Java程序員的東西:)) –