2008-10-03 11 views
11

Ich habe ein Problem ähnlich dem hier gefunden: JSF selectItem label formatting.Formatieren eines Doppel in JSF

Was ich tun möchte ist, ein Doppel als Wert für meine zu akzeptieren und es mit zwei Dezimalstellen anzuzeigen. Kann das auf einfache Weise gemacht werden?

Ich habe versucht zu verwenden, aber das scheint auf den Wert aus dem inputText angewendet werden, die an den Server und nicht auf den Anfangswert im Eingabefeld gesendet wird.

Mein Code so weit:

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

EDIT: Der obige Code tatsächlich funktioniert. Ich wurde von JDeveloper getäuscht, der die JSP-Seite nicht aktualisiert hat, selbst wenn ich mein Projekt explizit neu erstellt und den eingebetteten OC4J-Server neu gestartet habe. Nach einem Neustart meines Computers war alles in Ordnung.

+0

Versuchen Sie, Backticks (') zu verwenden, um JSF-Code zu umgeben, der < and > Zeichen enthält - ich denke, es ist etwas von Ihrem Beitrag gegessen! –

Antwort

14

Wenn ich nicht Ihre Anforderung Missverständnis, konnte ich die Formatierung des Wertes in dem Eingabefeld mit während der Wiedergabe der Ansicht erreichen:

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

ich die Norm wurde unter Verwendung von Faces-Komponenten in meinem Eclipse-Hersteller-Marke, also nehme ich an, dass das pattern Attribut Teil von Standard-JSF ist.

+0

Ihr Code arbeitete mit einigen Änderungen am Muster. Allerdings fand ich auch meinen eigenen Code, der jetzt funktioniert. JDeveloper hat die Änderungen nicht übernommen, die ich selbst beim Neukompilieren und Neustarten des eingebetteten OC4J-Servers vorgenommen habe. Nach einem Neustart meines Computers hat alles gut funktioniert. – Stian

1

Wenn Sie versuchen, den Wert des Eingabetextfeldes auf dem Bildschirm zu ändern (um Benutzereingaben zu korrigieren), sollten Sie wahrscheinlich eines der JSF-Ajax-Frameworks wie Rich Faces verwenden.

Ein mögliches Beispiel würde wie folgt aussehen:

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

Ich habe nicht getestet, aber ich denke, es funktioniert.

+0

Eigentlich war es andersherum. Ich muss die Eingabe nicht validieren, sondern den Standardwert des Eingabefelds formatieren. Danke trotzdem! – Stian

0

Es scheint, dass Sie tatsächlich eine Währung formatieren. Es gibt bereits ein bestimmtes Formatierungsprogramm Währungen zu behandeln, die Sie viele Möglichkeiten zuweisen können:

<f:convertNumber type="currency" /> 

Einige interessanten Attribute dieses Tags sind: locale, currencyCode, integerOnly, currencySymbol und pattern.