我从数据库表中迭代一个行列表,其中包含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标签(如果可能的话)。
答案 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>