Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSP中使用Java8时间_Jsp_Struts2_El_Java Time_Valuestack - Fatal编程技术网

在JSP中使用Java8时间

在JSP中使用Java8时间,jsp,struts2,el,java-time,valuestack,Jsp,Struts2,El,Java Time,Valuestack,对于我的开源项目,我正在将日期字段从java.util.date切换到Java8的java.time.LocalDateTime 在JSP中,我使用Struts标记来格式化传入bean中的java.util.Date,但是,这些标记不适用于Java8时间。我使用Struts标记不仅检索时间字段,还检索用于解析时间字段的格式字符串: “generic.date.toStringFormat”位于消息资源文件中,myBean.timeField来自支持JSP的操作表单 看看这篇文章:,我似乎可以

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

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


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

看看这篇文章:,我似乎可以使用两种选择,Sargue或定制EL函数,例如前者:


问题是,
“myBean.timeField”
“generic.date.toString格式”
似乎只能在Struts标记中解决。如果
是标准的HTML标记,我可以使用
来解析值,例如



但是
是一个JSP标记,我似乎无法在其他JSP标记中解析Struts JSP标记。问题:如何将bean值
myBean.timeField
和消息资源值
generic.date.toString格式
提取到变量中,以便在上面的
标记中引用它们?(如果这可以通过自定义EL功能选项来实现,这也适用于我。)

您可以在
属性中使用EL。Struts2包装了从
valueStack
搜索属性的请求。这是从EL对动作变量的本机访问

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

要添加到Roman答案中的更多信息:要从资源文件中获取模式,请添加JSTL fmt标记并将其放入变量中:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:message key="generic.date.toStringFormat" var="dateFormat"/>
另外,对于从Struts迭代器标记检索的日期变量:

<s:date name="#iter.myDateField"/>

这可以通过使用Struts set标记来替换:

<s:set var="tempTime" value="#comment.postTime"/>
<javatime:format value="${tempTime}" pattern="${dateFormat}"/>

${myBean.timeField}工作得很好,thx,模式部分(有或没有${})仍然失败,不过,我要看看是否可以使用JSTL fmt标记将资源值提取到变量中,这样我就可以在jt:pLDT标记中执行类似pattern={$patternVar}的操作。
<s:set var="tempTime" value="#comment.postTime"/>
<javatime:format value="${tempTime}" pattern="${dateFormat}"/>