自定义 Struts 类型转换器不工作
Custom Struts type converter is not working
我确实有一个 getter/setter 用于 Date
变量,像这样:
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
之前的代码应该调用助手 class 并将字符串转换为 date
然后调用 registrationDate
setter.. 但它似乎不起作用.. 我什至在帮助程序代码中调用了 log
但它没有出现在 eclipse 中。
似乎 struts2-json-plugin 不使用默认类型转换。 :(
要设置日期格式,您可以使用 @JSON
注释,其中包含 format
属性.
@JSON(format = "dd.MM.yyyy")
public void setRegistrationDate(Date registrationDate) {
this.registrationDate = registrationDate;
}
JSON 插件文档 - Customizing Serialization and Deserialization.
我确实有一个 getter/setter 用于 Date
变量,像这样:
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
之前的代码应该调用助手 class 并将字符串转换为 date
然后调用 registrationDate
setter.. 但它似乎不起作用.. 我什至在帮助程序代码中调用了 log
但它没有出现在 eclipse 中。
似乎 struts2-json-plugin 不使用默认类型转换。 :(
要设置日期格式,您可以使用 @JSON
注释,其中包含 format
属性.
@JSON(format = "dd.MM.yyyy")
public void setRegistrationDate(Date registrationDate) {
this.registrationDate = registrationDate;
}
JSON 插件文档 - Customizing Serialization and Deserialization.