2

数値のリストがあります (範囲 500 ~ 5000、500 刻み)。10 進数のドット 1000 -> 1.000 を追加したいと思います。2500 -> 2.500 などですが、ラベルが値として保存されないようにするためだけです。次のことを試しましたが、うまくいきませんでした:

<h:selectOneMenu value="#{bean.selectedValue}">
    <f:convertNumber type="currency" locale="de-DE" pattern="#,###" />
    <f:selectItems itemValue="#{bean.selectItemslist}" var="item" itemLabel="#{item.label}" itemValue="#{item.value} />
</h:selectOneMenu>

しかし、これは何もしませんでした:(

いくつかのパターンを試し、integerOnly="true" を含めましたが、何も機能していないようです:(助けてくれてありがとう!

4

1 に答える 1

6

コンバーターは、アイテムのラベルではなく、アイテムの値のみに適用されます。それが「失敗する」理由を説明しています。この特定のケースでは、次のような結果になるように、カスタム EL 関数を作成するのが最善の策です。

<f:selectItems ... itemLabel="#{my:formatNumber(item.label, '#,###')}" />

JSF ユーティリティ ライブラリOmniFacesにはいくつかの機能があります。 OmniFaces functions/Numbersショーケースも参照してください。

于 2013-03-14T16:00:25.510 に答える