JSTL c:set 和 Struts s:set 是不受欢迎的数字格式
Posted
技术标签:
【中文标题】JSTL c:set 和 Struts s:set 是不受欢迎的数字格式【英文标题】:JSTL c:set and Struts s:set are undesirably formatting numbers 【发布时间】:2014-06-18 23:01:14 【问题描述】:<c:set var="xmlDocumentId" value="$id" scope="request" />
<s:set var="xmlDocumentId" value="%id" scope="request" />
正在根据区域设置格式化 id,将 xmlDocumentId 设置为 "12,345"
while:
<c:out value="$id" />
<s:property value="%id" />
正在输出“12345”。
任何想法如何打破这种行为?
【问题讨论】:
删除范围="request"。 删除范围使变量在使用它的地方不可用。 你想在哪里使用它? 在请求中。属性正在使用它来生成文档的链接。例如xmlDocumentUrl=xmlDocument.action?xmlDocumentId=xmlDocumentId因为您使用getText
或<s:text>
标记获得价值,所以您的长值会根据区域设置进行格式化。为防止这种情况发生,请将您的 long 转换为字符串。
使用<s:set>
标签可以直接在value
属性中调用toString()
方法。
<s:set var="xmlDocumentId" value="id.toString()" scope="request" />
对于具体的格式化算法,请查看java.text.MessageFormat
类及其subformat
方法。
【讨论】:
【参考方案2】:一旦您知道how to format numbers in Java,在Struts2 中的<s:property/>
标签中,您就可以使用getText()
以所需的方式格式化您的号码,例如:
<s:property value="getText('0,number,#,##0',id)"/>
【讨论】:
Andrea:谢谢,但问题是当我不想设置标签时,它正在格式化我的数字。如何阻止 set 标签格式化数字?【参考方案3】:试试这个
<s:text name="id" > <s:param name="value" value="id"/> </s:text>
【讨论】:
以上是关于JSTL c:set 和 Struts s:set 是不受欢迎的数字格式的主要内容,如果未能解决你的问题,请参考以下文章