如何使用条纹框架将日期从 JSP 传递到 Java?

How to pass date from JSP to Java using stripes framework?

我正在使用 Stripes Framework 并尝试从 jsp 获取日期时间,但由于某种原因,setter 总是将 null 传递给它。

JSP 片段:

<stripes:form name="dateForm" action="some.actionBean.url">
    <stripes:hidden name="myDate" value="12-23-2015 12:00" />
</stripes:form>

ActionBean 片段:

private DateTime myDate;

public void setMyDate(DateTime date){
  //when the setter gets called date is null, but why?
  this.myDate = date;
}
public DateTime getMyDate(){
  return this.myDate;
}

我已经尝试了很多东西,比如

还没有运气,我做错了什么?

我基本上是在摸黑,因为找不到 Tag Lib 文档。在 official site it is linked to a broken page.

您正在绑定到一个 DateTime 对象。 Stripes 有一个内置的 TypeConverter 用于 Date 个对象,但没有用于 DateTime.

当您将 myDate 更改为 java.util.Date 时,条纹的 DateTypeConverter 将拾取它。

否则,例如,如果您需要 joda.time.DateTime 的支持,您将需要编写自己的自定义 TypeConverter(您不需要它,因为它打印在下面):

public class JodaDateTimeTypeConverter implements TypeConverter<DateTime> {

    @Override
    public DateTime convert(String input, Class<? extends DateTime> type, Collection<ValidationError> errors) {

        DateTimeFormatter formatter = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm");
        DateTime datetime = formatter.parseDateTime(input);
        return datetime;
    }

    @Override
        public void setLocale(Locale arg0) {
    }
}

并将此自定义 TypeConverter class 放入您的 Stripes 扩展包(其中一个)中,该扩展包可以在名为 StripesFilter 的过滤器下的 web.xml 中定义:

<init-param>
    <param-name>Extension.Packages</param-name>
    <param-value>path.to.my.extensionpackage</param-value>
</init-param>