3

永続エンティティのいくつかのフィールドを編集するためのページがあります。このページは、エンティティの永続 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のでしょうか?また、そのような状況の回避策はありますか? よろしくお願いします!

4

0 に答える 0