我确实有Date
变量的getter / setter,如下所示:
private Date registrationDate;
@TypeConversion(converter = "org.com.helper.DataHelper")
public Date getRegistrationDate() {
return registrationDate;
}
@TypeConversion(converter = "org.com.helper.DataHelper")
public void setRegistrationDate(Date registrationDate) {
this.registrationDate = registrationDate;
}
如您所见,我已创建了一个自定义struts
转换器,可将传入的字符串转换为Date
格式,然后进行分配。但它似乎不起作用。以下是DateHelper的代码:
public class DateHelper extends StrutsTypeConverter {
private static final DateFormat FORMAT = new SimpleDateFormat("dd-MM-yyyy");
@Override
public Object convertFromString(Map arg0, String[] values, Class arg2) {
try {
System.out.println(values[0]+"called from datahelper");
return FORMAT.parse(values[0]);
} catch (Exception e) {
throw new TypeConversionException(e.getMessage());
}
}
@Override
public String convertToString(Map arg0, Object value) {
try {
return FORMAT.format(value);
} catch (Exception e) {
throw new TypeConversionException(e.getMessage());
}
}
}
我使用struts2-json
插件来获取和解析表单数据。此插件会自动分配所有字符串值,但我确实遇到Date
的问题。
这是我从表单传递给Java的数据的方式。
{"data":{"recordId":"123","registrationDate":"20-07-2016","hisId":"","herId":"","lastNameHe":"Asd","firstNameHe":"Asd","middleNameHe":"Asd","workPlaceHe":"","educationHe"}}
所以,根据我的理解,在开始设置registrationDate
之前的代码应该调用帮助器类并将字符串转换为date
,然后调用registrationDate
setter ..但它似乎不起作用..我甚至在帮助代码中调用了log
,但它并没有出现在日食中。
答案 0 :(得分:2)
似乎struts2-json-plugin不使用默认类型转换。 :(
要设置日期格式,您可以使用@JSON
属性为format
的注释。
@JSON(format = "dd.MM.yyyy")
public void setRegistrationDate(Date registrationDate) {
this.registrationDate = registrationDate;
}
JSON插件文档 - Customizing Serialization and Deserialization。