代码之家  ›  专栏  ›  技术社区  ›  prostynick

struts 2<s:property/>标记中的格式编号

  •  14
  • prostynick  · 技术社区  · 15 年前

    我想格式化显示的数字 <s:property value="summary.total"/> 在Struts 2中标记。有一个 double 价值。我该怎么做?我应该用吗? OGNL ?

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

    5 回复  |  直到 10 年前
        1
  •  9
  •   Community CDub    8 年前

    你需要使用 <s:text/> 具有 <s:param/> .

    属性文件:

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

    日本标准:

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

    This answer 解释如何使用 # 0 在格式掩码中。

        2
  •  16
  •   Juanmi    14 年前

    更快的方法

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

    真幸运!你说什么?

        3
  •  6
  •   Alfredo Osorio    14 年前

    这个更快:

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

    在您的属性文件中:

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

    希望这有帮助

        4
  •  2
  •   sarie    14 年前

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

    这就是工作

        5
  •  1
  •   Alireza Fattahi    11 年前

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

    <fmt:formatNumber groupingUsed="true" type="currency" value="${amount}" />