JSTL c:set和Struts s:set是不合需要的格式化数字

时间:2014-06-18 23:01:15

标签: struts2 jstl

<c:set var="xmlDocumentId" value="${id}" scope="request" />
<s:set var="xmlDocumentId" value="%{id}" scope="request" />

根据区域设置格式化ID,将xmlDocumentId设置为"12,345",同时:

<c:out value="${id}" />
<s:property value="%{id}" />

正在输出&#34; 12345&#34;。

任何想法如何打破这种行为?

3 个答案:

答案 0 :(得分:1)

由于您通过getText<s:text>标记获得了价值,因此您的长值会根据区域设置进行格式化。为了防止这种情况发生,请将您的long转换为字符串。

使用<s:set>标记,您可以直接在toString()属性中调用value方法。

<s:set var="xmlDocumentId" value="id.toString()" scope="request" />

对于具体的格式化算法,请查看java.text.MessageFormat类及其subformat方法。

答案 1 :(得分:0)

知道how to format numbers in Java后,在Struts2 <s:property/>标记中,您可以使用getText()以所需方式格式化您的号码,例如:

<s:property value="getText('{0,number,#,##0}',{id})"/>

答案 2 :(得分:-2)

试试这个

<s:text name="id" > <s:param name="value" value="id"/> </s:text>