2008-10-03 27 views
11

Tengo un problema similar al que se encuentra aquí: JSF selectItem label formatting.Formateando un doble en JSF

Lo que quiero hacer es aceptar un valor doble para mi y mostrarlo con dos decimales. ¿Se puede hacer esto de una manera fácil?

He intentado usar pero parece aplicarse al valor del inputText que se envía al servidor y no al valor inicial en el campo de entrada.

Mi código hasta ahora:

<h:inputText id="december" value="#{budgetMB.december}" onchange="setDirty()" styleClass="StandardBlack"> 
    <f:convertNumber maxFractionDigits="2" groupingUsed="false" /> 
</h:inputText> 

EDIT: El código anterior funciona realmente. Fui engañado por JDeveloper que no actualizó la página jsp incluso cuando hice una reconstrucción explícita de mi proyecto y reinicié el servidor OC4J incrustado. Sin embargo, después de un reinicio de mi computadora todo estaba bien.

+0

Trate de usar patillas (') para rodear el código JSF que contiene < and > caracteres - ¡Creo que se ha comido parte de su publicación! –

Respuesta

14

Si no estoy malentendido su requerimiento, yo era capaz de lograr el formato del valor en el cuadro de entrada durante la entrega de la vista con:

<h:inputText id="text1" value="#{...}"> 
    <f:convertNumber pattern="#,###,##0.00"/> 
</h:inputText> 

que estaba usando la Norma Caras Componentes en mi Eclipse de marca de proveedor, así que supongo que el atributo pattern es parte del JSF estándar.

+0

Tu código funcionó con algunos cambios en el patrón. Sin embargo, también descubrí que mi propio código funcionaba ahora. JDeveloper no tomó los cambios que hice incluso cuando recompilaba y reiniciaba el servidor OC4J incorporado. Después de reiniciar mi computadora, todo funcionó bien, sin embargo. – Stian

1

Si lo que está intentando hacer es cambiar el valor del campo de entrada de texto en la pantalla (para corregir la entrada del usuario), probablemente debería utilizar uno de los frameworks ajax JSF como Rich Faces.

Un posible ejemplo sería el siguiente:

<h:inputText id="december" value="#{budgetMB.december}" styleClass="StandardBlack"> 
    <f:convertNumber maxFractionDigits="2" groupingUsed="false" /> 
    <a4j:support event="onblur" reRender="december" /> 
</h:inputText> 

no he probado esto, pero creo que puede funcionar.

+0

En realidad fue al revés. No es necesario validar la entrada, pero formatee el valor predeterminado del campo de entrada. ¡Gracias de cualquier manera! – Stian

0

Parece que en realidad está formateando una moneda. Ya existe un formateador específico para manejar las monedas que se pueden asignar a muchas opciones:

<f:convertNumber type="currency" /> 

Algunos atributos interesantes de esta etiqueta son: locale, currencyCode, integerOnly, currencySymbol y pattern.