自定义Struts类型转换器不起作用

时间:2016-07-21 03:57:58

标签: java maven struts2 converter struts2-json-plugin

我确实有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,但它并没有出现在日食中。

1 个答案:

答案 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