Pregunta

Tengo un problema similar al que se encuentra aquí: Formato de etiqueta JSF selectItem .

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

He intentado usarlo, 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>

EDITAR: el código anterior realmente funciona. JDeveloper me engañó y no actualizó la página jsp incluso cuando hice una reconstrucción explícita de mi proyecto y reinicié el servidor OC4J incorporado. Sin embargo, después de reiniciar mi computadora, todo estaba bien.

¿Fue útil?

Solución

Si no estoy entendiendo mal su requisito, pude lograr el formateo del valor en el cuadro de entrada durante la representación de la vista con:

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

Estaba usando los componentes de caras estándar en mi Eclipse con la marca del proveedor, así que supongo que el atributo pattern es parte de JSF estándar.

Otros consejos

Si lo que intentas hacer es cambiar el valor del campo de texto de entrada en la pantalla (para corregir la entrada del usuario), probablemente deberías considerar el uso de uno de los marcos Ajax de JSF como Rich Faces .

Un posible ejemplo se vería así:

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

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

<f:convertNumber type="currency" />

Algunos atributos interesantes de esta etiqueta son: locale , currencyCode , integerOnly , currencySymbol y patrón .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top