16

我想格式化<s:property value="summary.total"/>Struts 2 中标签显示的数字。有一个double值。我怎样才能做到这一点?我应该使用OGNL吗?

或者也许我必须使用<s:text/>标签并在资源文件中定义我的格式?

4

6 回答 6

18

方式更快

<s:property value="getText('{0,number,#,##0.00}',{summary.total})"/>

幸运的!!

于 2011-03-22T16:20:41.917 回答
10

您需要使用<s:text/>with <s:param/>

属性文件:

summary.cost= € {0,number,##0.00}

JSP:

<s:text name="summary.cost"> 
    <s:param name="value" value="summary.total"/> 
</s:text>

这个答案解释了如何使用#0格式掩码。

于 2009-10-13T07:34:15.813 回答
5

这个更快:

<s:property value="getText('struts.money.format', {summary.cost})" />

在你的属性文件中:

struts.money.format= {0,number,\u00A4##0.00}

希望这有帮助

于 2011-03-07T22:46:15.950 回答
3

我有这个问题以这种方式格式化数字 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>

这是工作

于 2011-07-05T09:10:56.173 回答
2

如果您的属性在您的操作中不是数字,那么 getText 将无法处理它。该模式只接受数字。在这种情况下,您可以使用@sarie 提到的 fmt

<fmt:formatNumber groupingUsed="true" type="currency" value="${amount}" />
于 2013-11-16T15:21:13.977 回答
0

最快最简单的方法是使用<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

于 2019-06-13T11:28:53.050 回答