NoSuchMethodException in Struts2



我有出生日期的文本字段。当用户输入无效日期时,例如字符串,错误消息已成功显示为字段错误。但是在我的控制台中,我收到此错误:

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

错过了一些东西,这就是我遇到错误的原因吗?

在您的 Action 类中,您没有一个名为 setBirthDate(String birthDate) 的方法,添加它您的问题应该得到解决。

注意检查以查看是否已将所有 getter 和 setter 放置在所有属性的操作类中。

我认为在您的 JSP 中您有:

<s:textfield name="birthDate" />

支柱将尝试将其映射到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;
    }
}

如果您不想使用注释,那么您可以查看官方文档。

最新更新