自定义 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.