我有出生日期的文本字段。当用户输入无效日期时,例如一个字符串,错误消息成功显示为 fielderror。但是在我的控制台中,我收到了这个错误:
java.lang.NoSuchMethodException: Profile.setBirthDate([Ljava.lang.String;)
我是否错过了一些导致我遇到错误的原因?
我有出生日期的文本字段。当用户输入无效日期时,例如一个字符串,错误消息成功显示为 fielderror。但是在我的控制台中,我收到了这个错误:
java.lang.NoSuchMethodException: Profile.setBirthDate([Ljava.lang.String;)
我是否错过了一些导致我遇到错误的原因?
在您的 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,则可以查看官方文档。