永続エンティティのいくつかのフィールドを編集するためのページがあります。このページは、エンティティの永続 ID である GET リクエスト パラメータを受け取ります。
<f:metadata>
<f:viewParam name="streamid" value="#{editStreamController.stream}"
converter="#{editStreamController.streamConverter}" />
</f:metadata>
コンバーターは、たとえばhere で説明されているように、永続化サービスから ID をロードすることにより、ID をエンティティーに変換するために使用されます。
このページには、' stream ' エンティティのいくつかのフィールドを編集するために使用されるフォームが含まれています。フォームの文字列に<o:form includeViewParams="true">
GET パラメータを含めることができるようにするために、OmniFaces を使用しています。action
<o:form includeViewParams="true" >
...
<h:inputText id="name" value="#{editStreamController.stream.name}" >
<f:validator binding="#{editStreamController.validator}" />
</h:inputText>
...
状況によっては、フォームが投稿されたときにf:viewParam
、エンティティを担当しh:inputText
、エンティティのフィールドを処理する両方が、デコード、検証、およびモデルの更新フェーズを通過する必要があるため、エンティティが最初に利用可能になり、次にそのフィールドが更新されることがあります。最初にその値を設定するためにforを設定immediate="true"
しf:viewParam
、後で"#{editStreamController.stream.name}"
. ただし、javadocによると、immediate
設定は には関係ありませんUIViewParameter
。
では、なぜimmediate
設定を構成できないUIViewParameter
のでしょうか?また、そのような状況の回避策はありますか? よろしくお願いします!