1

jsf で数値をコンマでフォーマットしたい例: テキスト フィールドに 100000 と入力し、他のフィールドに移動すると、テキスト フィールドに 100,000 が表示されます。javascriptでできることはわかっていますが、jsfビルドイン関数でできるかどうかはわかりません。groupingUsed="true" を試してみましたが、それでもうまくいきません。

ここに私のjsfコードの一部があります:

    <h:outputLabel for="testing" value="testing ID *" />                      
    <h:inputText id="testing" required="true" label="testing" value="#{user.testing}" style="width:200px"  >  
      <f:convertNumber groupingUsed="true" for="testing"  /> 
    </h:inputText> 

編集:jsf 1.2とjsf 2の両方のバージョンで行う方法を知りたいです。

4

2 に答える 2

2

試す:

<f:convertNumber pattern="###,###" />
于 2012-01-05T10:18:41.080 に答える
0

JSF 2.0 の Ajax 機能がなければ、クライアント側の JavaScript と JSF のConverter. クライアント側のスクリプトは次のようになります。

<script type="text/javascript">
   function convertFormat() {
      // function to add comma 
   }
</script>

<h:inputText id="testing" required="true" label="testing" value="#{user.testing}" style="width:200px" onblur="convertFormat();" />

サーバー側ではConverter、元の番号を取得する必要があります。

@FacesConverter("converter.numberFormatConverter")
public class NumberFormatConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {        
        value = value.replaceAll(",", "");
        return Long.parseLong(value); 
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        // add back the comma
    }

}

あなたのgetAsObjectメソッドは、HTML の入力テキストから必要な入力のタイプに変換する場所です (Long私の例で使用しました)。メソッドは、反対のgetAsStringことを行う場所です。

,クライアント側のスクリプトに追加する方法を自分で理解できるようにします。お役に立てれば!

于 2012-01-05T10:36:47.010 に答える