未使用Struts2日期转换器

时间:2018-08-14 11:20:07

标签: java struts2

我正在尝试使用struts2的自定义转换器进行最简单的日期转换。

我有自定义日期转换器:

    public class DateConverter extends StrutsTypeConverter {

    public Object convertFromString(Map context, String[] values, Class toClass) {
        if (values != null && values.length > 0 && values[0] != null && values[0].length() > 0) {
            try {
                return SystemDate.convertStringToDate(values[0]);
            }
            catch(Exception e) {
                throw new TypeConversionException(e);
            }
        }
        return null;
    }

    public String convertToString(Map context, Object o) {
        if (o instanceof Date) {
            return SystemDate.convertDateToString((Date)o, false);
        }
        return "";
    }
}

在我的全局xwork-conversion中,我对其进行了设置,以便使用我的自定义转换器来转换所有日期:

java.util.Date=com.example.converter.DateConverter

但是,它永远不会被调用。当我尝试通过文本字段提交日期时:

<s:textfield name="someDateField" />

Struts无需调用转换器即可自动将其转换为java.util.Date。

我为我的域类准备了其他转换器,它们按预期工作。但是,对于Dates,struts会自动进行转换,而不是调用我的转换器。

我缺少某些设置吗?

我读到struts1不允许自定义日期转换,但这似乎已经在struts2中解决了。

1 个答案:

答案 0 :(得分:0)

我找到了非常具体的问题,但我将解决方案发布在这里,因为它可能会对其他人有所帮助。

我正在导入另一个内部项目作为Maven依赖项,并且此项目定义了Date转换器。由于某种我无法理解的原因,导入的项目配置覆盖了主要项目配置。

所以问题是导入的项目 xwork-conversion.properties 覆盖主项目 xwork-conversion.properties

>

我试图使主项目覆盖导入的项目的配置,但无济于事。