2009-10-13 15 views
13

Vorrei formattare il numero visualizzato dal tag <s:property value="summary.total"/> in Struts 2. C'è un valore double. Come lo posso fare? Dovrei usare OGNL?Formato numero in Struts 2 <s:property/> tag

O forse devo usare il tag <s:text/> e definire il mio formato nel file di risorse?

risposta

9

È necessario utilizzare <s:text/> con <s:param/>.

file di proprietà:

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

JSP:

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

This answer spiega come utilizzare # e 0 nella maschera di formato.

+0

Sì, ho scoperto che, ma ho pensato che forse c'è qualcosa di più veloce :) – prostynick

+0

Un 'double' valore e €? Spero sicuramente che non usi i numeri in virgola mobile per la valuta. – Svante

+0

Non ho mai menzionato € e Trick non ha mai menzionato 'double';) – prostynick

6

Questo è più veloce:

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

E nelle proprietà file di questo:

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

Spero che questo aiuto

16

Il modo più veloce

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

fortunato! !

2

Ho avuto questo problema per formattare un numero in questo modo 1.234,56

così ho preferito entrambi i tag Struts tag e tag FMT (fmt perché s: il numero non esistono)

quindi ho usato il seguente 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> 

ed è un lavoro

1

Se la proprietà non è il numero nella vostra azione poi il getText non funzionerà su di esso. Il modello accetta solo numeri. In questo caso si può andare con fmt come detto da @sarie

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