我正在尝试使用 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 转换中,我已经设置了它,以便使用我的自定义转换器转换所有日期:
java.util.Date=com.example.converter.DateConverter
但是,它永远不会被调用。当我尝试通过文本字段提交日期时:
<s:textfield name="someDateField" />
Struts会自动将其转换为java.util.Date,而无需调用我的转换器。
我为我的域类准备了其他转换器,这些转换器按预期工作。但是,对于日期,struts 会自动进行转换,而不是调用我的转换器。
我是否缺少一些设置?
我读到 struts1 不允许自定义日期转换,但这似乎是 struts2 中已经解决的问题。
我发现了我的问题,这是非常具体的,但我在这里发布解决方案,因为它可能会帮助其他人。
我正在导入另一个内部项目作为 maven 依赖项,并且该项目定义了日期转换器。由于某种我无法理解的原因,导入的项目配置覆盖了主项目配置。
所以问题在于导入的项目xwork-conversion.properties覆盖了主项目xwork-conversion.properties。
我试图使主项目覆盖导入项目的配置,但无济于事。