使用Struts2在JSP中格式化Joda-Time的日期

时间:2014-01-29 19:24:01

标签: jsp datetime struts2 jodatime datetime-format

我从数据库表中迭代一个行列表,其中包含MySQL中类型为DateTime的列,如下所示(代码的不完整版本)。

<s:iterator value="discounts" status="loopStatus">

    <joda:format var="formattedStartDate" 
                 value="${discountStartDate}" 
                 pattern="dd-MMM-yyyy HH:mm:ss" style="F-" 
                 dateTimeZone="Asia/Kolkata"/>

    <td><c:out value="${formattedStartDate}"/></td>
</s:iterator>

我们可以使用<joda:format>和struts标签格式化日期时间吗?

我可以替换吗,

<c:out value="${formattedStartDate}"/>

有类似的东西,

<s:property value="%{formattedStartDate}" />

它不起作用。迭代完整列表后,该列保持为空,因为相应模型中的实际属性为discountStartDate<s:property>标记丢失。


其他信息:

日期格式化是使用custom converter在内部完成的,但我希望以dd-MMM-yyyy HH:mm:ss格式显示日期(由转换器完成),jQuery日期时间选择器不接受我正在使用。

因此,除非在编辑行时给出日期时间选择器(MM/dd/yyyy HH:mm:ss)接受的格式,否则无法编辑HTML表中以指定格式列出的日期。 / p>

请不要只说,使用另一个可以接受dd-MMM-yyyy HH:mm:ss 格式的日期时间选择器。这种需求也可能出现在不同的地方。


实际上我需要formattedStartDate <s:param>内的<s:url>的值,但为了简单起见,我没有提到这一点。无论如何,formattedStartDate的值应该被赋予/分配给Struts标签(如果可能的话)。

1 个答案:

答案 0 :(得分:2)

如果您不使用scope标记的<joda:format>属性,则默认范围将是页面范围。为了在Struts2标签中获取它,请使用#attr来搜索页面,请求,会话和应用程序范围。

<s:iterator value="discounts" status="loopStatus">
    <joda:format var="formattedStartDate" 
                 value="${discountStartDate}" 
                 pattern="dd-MMM-yyyy HH:mm:ss" style="F-" 
                 dateTimeZone="Asia/Kolkata"/>

    <td><s:property value="#attr.formattedStartDate" /></td>
</s:iterator>