2009-10-13 12 views
13

Chciałbym sformatować numer wyświetlany przez znacznik <s:property value="summary.total"/> w Struts 2. Istnieje wartość double. Jak mogę to zrobić? Czy powinienem używać OGNL?Numer formatu w tagach Struts 2 <s:property/>

A może muszę użyć znacznika <s:text/> i zdefiniować mój format w pliku źródłowym?

Odpowiedz

9

Musisz użyć <s:text/> z <s:param/>.

plik nieruchomości:

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

JSP:

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

This answer wyjaśnia, jak korzystać # i 0 w masce formatu.

+0

Tak, znalazłem to, ale pomyślałem, że może jest coś szybciej :) – prostynick

+0

'double' wartość i €? Mam nadzieję, że nie użyjesz liczb zmiennoprzecinkowych dla waluty. – Svante

+0

Nigdy nie wspominałem o € i Trick nigdy nie wspomniał o "podwójnym";) – prostynick

6

Ten jest szybsze:

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

A we właściwościach pliku to:

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

Hope to pomóc

16

Sposób bardziej szybki

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

szczęście! !

2

miałem ten problem formatowania liczby w ten sposób 1.234,56

więc wolałem oba znaczniki zastrzały i tag tag fmt (fmt bo s: numer nie istnieje)

więc użyłem następujące syntaxe:

<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> 

i jest to praca

1

Jeżeli nieruchomość nie jest numer w swoim działaniu getText wówczas nie będzie działać na nim. Wzór przyjmuje tylko liczby. W tym przypadku można przejść z FMT jak wspomniano przez @sarie

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