如何使用条纹框架将日期从 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;
}
我已经尝试了很多东西,比如
- 尝试将值设置为不同的时间格式
- 试图让
setter 接受一个字符串,然后转换为 DateTime(这没有
工作因为字符串也是空的)
- 尝试了不同的条纹标签
还没有运气,我做错了什么?
我基本上是在摸黑,因为找不到 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>
我正在使用 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;
}
我已经尝试了很多东西,比如
- 尝试将值设置为不同的时间格式
- 试图让 setter 接受一个字符串,然后转换为 DateTime(这没有 工作因为字符串也是空的)
- 尝试了不同的条纹标签
还没有运气,我做错了什么?
我基本上是在摸黑,因为找不到 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>