2009-10-13 34 views
13

Me gustaría dar formato al número mostrado por la etiqueta <s:property value="summary.total"/> en Struts 2. Hay un valor de double. ¿Cómo puedo hacer eso? ¿Debo usar OGNL?Número de formato en Struts 2 <s:property/> tag

O tal vez debo usar la etiqueta <s:text/> y definir mi formato en el archivo de recursos?

Respuesta

9

Necesita usar <s:text/> con <s:param/>.

Ficha del inmueble:

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

JSP:

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

This answer explica cómo utilizar # y 0 en la máscara de formato.

+0

Sí, me encontré con que, pero pensé que tal vez hay algo más rápido :) – prostynick

+0

Un 'double' valor y €? Espero que no uses números de coma flotante para moneda. – Svante

+0

Nunca mencioné € y Trick nunca mencionó 'double';) – prostynick

6

Ésta es más rápido:

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

Y en sus propiedades de archivos Este:

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

Esperanza esta ayuda

16

La forma más rápida

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

suerte! !

2

que tenía este problema para dar formato a un número de esta manera 1.234,56

así que preferimos ambas etiquetas puntales etiqueta y la etiqueta FMT (FMT porque s: número no existen)

así que usa la siguiente Sintaxis:

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

y es un trabajo

1

Si su propiedad no es el número de su acción, entonces el getText no va a trabajar en él. El patrón solo acepta números. En este caso se puede ir con FMT como se ha mencionado por @sarie

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