私は自分のページをできるだけユーザーフレンドリーにしたいと思っています。アイデアはありますが、解決したい方法では少し難しいです。
Primefacesを使用していますが、selectOneMenu要素を使用して、selectOneMenuで選択された変数の値を含むoutputTextのみに変更したいと考えています。誰かが気の利いたアイデアを持っていますか?
私は自分のページをできるだけユーザーフレンドリーにしたいと思っています。アイデアはありますが、解決したい方法では少し難しいです。
Primefacesを使用していますが、selectOneMenu要素を使用して、selectOneMenuで選択された変数の値を含むoutputTextのみに変更したいと考えています。誰かが気の利いたアイデアを持っていますか?
これは、ajaxと部分レンダリングで実行できます。これが私のアイデアのスケッチです(テストされておらず、プレーンなJSFで):
<h:panelGroup id="wrapper">
<h:selectOneMenu value="#{myBean.myValue}"
rendered="#{myBean.myValue == someInitialValue}" ...>
<f:ajax render="wrapper"/>
... (your select items here)
</h:selectOneMenu>
<h:outputText value="#{myBean.myValue}"
rendered="#{myBean.myValue != someInitialValue}" .../>
</h:panelGroup>
そしてそれはそれがすることです:
の値h:selectOneMenu
が初期化され、初期値の場合にのみメニューが表示されます。
値を変更すると、周囲のパネルグループが再レンダリングされ、メニューが非表示になり、表示されますh:outputText
。
outputTextはページの読み込み時に存在しないため、これにはラッピングpanelGroupが必要です。フォームが小さい場合は、render=@form
代わりに、または他の周囲のコンテナを使用することもできます。そうすれば、ラッパーは必要ありません。