一部の入力フィールドに応じて、応答ページを表示する必要があります。たとえば、以下の tabid inputHidden :
#{controllerBean.tabId}
...
<h:form id="edit">
<h:inputHidden value="#{controllerBean.tabId}" id="tabid" />
<h:inputText value="#{controllerBean.name}" id="name" />
</h:form>
しかし、同じフォームの他の入力に検証エラーがある場合 (例: 「名前」inputText)。JSF が検証段階で戻るため、「controllerBean.tabId」値は割り当てられません。
ページを正しく表示するにはまだ tabId が必要で、2 つのアイデアを念頭に置いています。
#{param['edit:tabid']}
またはバインディングを使用します。
#{tabId.value}
<h:inputHidden value="#{controllerBean.tabId}" id="tabid" binding="tabId" />
私の質問は、これら 2 つのどちらが優れているか、またはベスト プラクティスであるかということです。または、これを行うためのさらに良い方法はありますか?
アップデート:
ノート。私の特定のケースでは、tabid はクライアントの JavaScript によって設定されます。
- サーバーは、html にいくつかの項目を返信します。
- Javascript は、これらの項目をページの別のタブに配置します。
- タブの 1 つが、フォーム内の現在のタブ ID を使用してサーバーにデータを POST します。
したがって、サーバーは、正しいタブが選択された応答ページを表示するためのタブ ID を知る必要があります。