質問
このプロジェクトでは、すべてのプレゼンテーション要素を xhtml に保持しようとしています。selectItem タグの一部の値には BigDecimal 値があり、それを通貨のように見せる必要があります。とにかく適用することはありますか <f:convertNumber pattern="$#,##0.00"/>
内側 <f:selectItem>
鬼ごっこ?
これを行う方法、またはこれを Java コードにプッシュする以外の回避策はありますか?
解決
ここでさらに調査を行った結果、現在の JSF 実装ではこれは不可能であると確信しました。価値を変える機会がないだけです。
http://java.sun.com/javaee/javaserverfaces/1.2/docs/tlddocs/f/selectItem.html
tld は、 itemLabel
としての財産 ValueExpression
そして本体の内容は <f:selectItem>
空であるかのように。したがって、これらのタグの内部には何も存在することはできず、ラベルは Java モデル内のそのままの値を指す必要があります。したがって、Java モデルからフォーマットされています。
他のヒント
JSF の初心者である私も同様の問題を抱えていました。私の解決策は役立つかもしれませんが、「JSF の精神」に基づいていないかもしれません。
カスタムのtaglibを作成し、クラス(私の場合はorg.apache.myfaces.component.html.ext.HtmlCommandButton)を拡張し、カスタムパラメータを適用するためにセッターをオーバーライドしました。
だから代わりに <t:commandButton/>
私が使った <mytags:commandButton/>
, 、それは私が望むのと同じくらい柔軟です。
そのパターンでコンバータをセットアップすることもできますが、それはあなたが望むものとは正反対のように聞こえます。