在JSP中使用Java8时间

对于我的开源项目,我正在将日期字段从
java.util.Date切换到
Java 8的java.time.LocalDateTime.

在JSP中,我使用Struts标签来格式化传入的bean中的java.util.Date,但这些不适用于Java 8时间.我使用Struts标签不仅要检索时间字段,还要使用用于解析它的格式化字符串:

<s:text name="generic.date.toStringFormat">
    <s:param value="myBean.timeField" />
</s:text>

“generic.date.toStringFormat”位于消息资源文件中,myBean.timeField来自支持JSP的Action表单.

看看这篇文章:JSTL LocalDateTime format,似乎我可以使用两种选择,Sargue的https://github.com/sargue/java-time-jsptags或自定义EL功能,例如前者:

<javatime:format value="myBean.timeField" pattern="generic.date.toStringFormat"/>

问题是,“myBean.timeField”和“generic.date.toStringFormat”似乎只能在Struts标签内解析.如果< javatime>是一个标准的HTML标签,我可以使用< s:property />解决价值,例如,

<span><s:property value="myBean.timeField"/></span>

但是< javatime:… />是一个JSP标记,我似乎无法解析其他JSP标记中的Struts JSP标记.问题:如何将bean值myBean.timeField和消息资源值generic.date.toStringFormat提取到变量中,以便我可以在< javatime />中引用它们.标签上面? (如果这可以通过自定义EL功能选项完成,那对我也有用.)

最佳答案 您可以在value属性中使用EL. Struts2包含了一个从valueStack搜索属性的请求.这是对EL中的操作变量的本机访问.

<javatime:parseLocalDateTime value="${myBean.timeField}" pattern="generic.date.toStringFormat" var="parsedDate" />
点赞