Struts2<;s:url>;/&书信电报;s:param>;输出类型转换失败的日期参数值的标记
我正在努力解决Struts2日期格式问题。如果我理解正确,Struts2中的类型转换是区域设置感知的,映射到日期对象的任何表单字段/参数都应该是特定于区域设置的短格式字符串;值堆栈上日期对象的默认输出也作为特定于区域设置的短格式输出(除非使用自定义格式覆盖) 尽管表单字段可以很好地处理日期,但在使用Struts2<;s:url>;/&书信电报;s:param>;输出类型转换失败的日期参数值的标记,struts2,tags,Struts2,Tags,我正在努力解决Struts2日期格式问题。如果我理解正确,Struts2中的类型转换是区域设置感知的,映射到日期对象的任何表单字段/参数都应该是特定于区域设置的短格式字符串;值堆栈上日期对象的默认输出也作为特定于区域设置的短格式输出(除非使用自定义格式覆盖) 尽管表单字段可以很好地处理日期,但在使用标记时,我似乎无法使标记正确编码日期参数。当我尝试这样的事情时 <s:url action="foo" > <s:param name="endDateParam" value=
标记时,我似乎无法使
标记正确编码日期参数。当我尝试这样的事情时
<s:url action="foo" >
<s:param name="endDateParam" value="#endDate"/>
</s:url>
我重新阅读了Struts2文档,但他们主要讨论在i18n’ized属性文件中创建自定义日期格式,这似乎不是正确的解决方案
对此问题的任何帮助都将不胜感激。您可能已经通过按需要的方式在操作中格式化字符串来解决此问题。我首先建议您这样做,除非您非常坚持模型/视图分离,或者在操作和视图之间没有一对一的映射,在这种情况下,我的热情是合理的 假设您觉得格式化不是操作的业务,在这种情况下,您可以使用OGNL实现其全部效果: 下面是一个显示当前日期的示例(它使用new来构造一个新日期,但是您可以很容易地将“new java.util.date()”替换为“endDate”)。它是这样构造的,因此任何人都可以将它粘贴到他们的JSP中,而不需要任何操作依赖项
<p>
<s:property value="@java.text.DateFormat@getDateInstance(@java.text.DateFormat@SHORT, @java.util.Locale@CANADA).format(new java.util.Date())"/>
</p>
注意:要求OGNL静态方法访问为true。最简单的方法是将以下内容添加到struts.xml中:
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
将OGNL用于这一级别有点可疑,但它很容易阅读,并且其意图显然与视图/表示相关。尽管构建起来并不那么容易……最简单的方法是将所有内容都编写为一行java,然后应用OGNL语法规则,您可以在这里找到:
也可供快速参考:
您可以这样发送:
<s:param name="dateFrom">
<s:date name="dateFrom" format="dd.MM.yyyy"/>
</s:param>
<s:param name="dateFrom">
<s:date name="dateFrom" format="dd.MM.yyyy"/>
</s:param>