1

私は生年月日のテキストフィールドを持っています。ユーザーが無効な日付 (文字列など) を入力すると、エラー メッセージが fielderror として正常に表示されます。しかし、私のコンソールでは、次のエラーが発生しました。

java.lang.NoSuchMethodException: Profile.setBirthDate([Ljava.lang.String;)

エラーが発生した理由は何かを見逃したことがありますか?

4

1 に答える 1

1

あなたの Action クラスには というメソッドがありsetBirthDate(String birthDate)ません。それを追加して問題を解決してください。

すべてのプロパティのアクション クラスにすべての getter と setter を配置したことを確認してください。

あなたのJSPには次のものがあると思います:

<s:textfield name="birthDate" />

setBirthDate(String string)このメソッドがアクションにないため、Struts はこれを にマップしようとします。NoSuchMethodException

アップデート:

文字列を日付に変換するには:

public class MyStringToDateConverter extends StrutsTypeConverter {
    public Object convertFromString(Map context, String[] values, Class toClass) {
       //Parse String to get a date object
    }

    public String convertToString(Map context, Object o) {
       // Get the string from object o
    }
 }

アクションクラスで注釈を使用している場合は、アクションに追加@Conversion()します

@Conversion()
public class MyAction extends ActionSupport{
    public Date myDate = null;

    @TypeConversion(converter="MyStringToDateConverter") //Fully qualified name so if this class is in mypackage then converter will be "myPackage.MyStringToDateConverter"
    public void setMyDate(Date date) { 
        this.myDate = date;
    }
}

Annotation を使用したくない場合は、たとえば公式ドキュメントを参照してください。

于 2012-05-25T09:18:43.120 に答える