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" />

Struts 将尝试将其映射到setBirthDate(String string),因为您的操作中缺少此方法,因此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 回答