このプロジェクトの 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/>
そのパターンでコンバーターをセットアップすることもできますが、それはあなたが望むものとは正反対のように聞こえます.