【发布时间】:2010-12-06 05:33:04
【问题描述】:
我想格式化 Struts 2 中 <s:property value="summary.total"/> 标签显示的数字。有一个 double 值。我怎样才能做到这一点?我应该使用OGNL吗?
或者我必须使用<s:text/> 标签并在资源文件中定义我的格式?
【问题讨论】:
我想格式化 Struts 2 中 <s:property value="summary.total"/> 标签显示的数字。有一个 double 值。我怎样才能做到这一点?我应该使用OGNL吗?
或者我必须使用<s:text/> 标签并在资源文件中定义我的格式?
【问题讨论】:
这样更快
<s:property value="getText('{0,number,#,##0.00}',{summary.total})"/>
幸运!!
【讨论】:
您需要将<s:text/> 与<s:param/> 一起使用。
属性文件:
summary.cost= € {0,number,##0.00}
JSP:
<s:text name="summary.cost">
<s:param name="value" value="summary.total"/>
</s:text>
This answer 解释了如何在格式掩码中使用# 和0。
【讨论】:
double 价值,以及€?我当然希望您不要使用浮点数作为货币。
double ;)
这个更快:
<s:property value="getText('struts.money.format', {summary.cost})" />
在你的属性文件中:
struts.money.format= {0,number,\u00A4##0.00}
希望有帮助
【讨论】:
我在以这种方式 1.234,56 格式化数字时遇到了这个问题
所以我更喜欢两个标签 struts 标签和 fmt 标签(fmt 因为 s:number 不存在)
所以我使用了以下语法:
<s:label label="mylabel">
<s:param name="value">
<s:text name="">
<fmt:formatNumber maxFractionDigits="2" pattern="#.###" >1234.56</fmt:formatNumber>
</s:text>
</s:param>
</s:label>
它的工作
【讨论】:
如果您的属性在您的操作中不是数字,那么 getText 将无法处理它。该模式只接受数字。在这种情况下,您可以使用@sarie 提到的 fmt
<fmt:formatNumber groupingUsed="true" type="currency" value="${amount}" />
【讨论】:
最快最简单的方法是使用<s:number />标签。
例子:
<s:number name="%{summary.total}" minimumFractionDigits="2" type="currency" currency="USD" />
更多关于标签在这里https://struts.apache.org/maven/struts2-core/apidocs/org/apache/struts2/components/Number.html
【讨论】: