3

我有一个旨在编辑持久实体的某些字段的页面。该页面采用 GET 请求参数,该参数是我的实体的持久 ID。

    <f:metadata>
        <f:viewParam name="streamid" value="#{editStreamController.stream}"
            converter="#{editStreamController.streamConverter}" />
    </f:metadata>

转换器用于通过从持久性服务加载它来将 id 转换为实体,如here中所述。

该页面包含一个用于编辑“”实体的某些字段的表单。我使用 OmniFaces<o:form includeViewParams="true">以便action在表单的字符串中包含我的 GET 参数:

<o:form includeViewParams="true" >
...
    <h:inputText id="name" value="#{editStreamController.stream.name}" >
        <f:validator binding="#{editStreamController.validator}" />
    </h:inputText>
...

在某些情况下,当表单发布时,f:viewParam负责实体和h:inputText处理实体字段的双方都必须通过解码、验证和模型更新阶段,以便首先使实体可用,然后更新其字段。对我来说,设置immediate="true"for是很自然的f:viewParam,以便首先设置它的值,因此以后可以避免 UIInputs 的空指针问题,如"#{editStreamController.stream.name}". 但是根据javadoc,该immediate设置与UIViewParameter.

那么为什么该immediate设置不可配置UIViewParameter,是否有针对这种情况的解决方法?提前非常感谢!

4

0 回答 0