0

入力リクエストパラメータ(もちろん文字列型)の処理に問題があります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)

このStruts1フォームの基本は、ゲッターを返すこととセッターパラメータータイプを受け入れることの不一致のためにこのコードが機能しないということですか?どうすればこの問題を解決できますか?setStringDate(String stringDate(){...}likeという名前のメソッドを作成して、すべてのページでどのメソッドを呼び出すべきかを考えたくありません:(

4

2 に答える 2

1

日付形式は(仕様に応じて)変化する可能性があるため、日付オブジェクトを支柱のプロパティにすることはできません。dd-MM-yyyydd-MMMM-yyなどがある場合があります。

私はプロパティを持つことをお勧めします:

private String date;

public String getDate() { return date; }

public void setDate(String date) { this.date = date; }

Dateそして、あなたの行動では、日付文字列をオブジェクトに変換します。

于 2011-11-14T07:21:59.723 に答える
0

私の知る限り、オーバーロードされたメソッドはフォームBeanではうまく機能しません。2つのメソッドの名前を変えてみてください。運が良かったと思います。

于 2011-11-14T07:06:31.940 に答える