我有出生日期的文本字段。当用户输入无效日期时,例如字符串,错误消息已成功显示为字段错误。但是在我的控制台中,我收到此错误:
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;
}
}
如果您不想使用注释,那么您可以查看官方文档。