我有一个页面用于编辑持久性实体的某些字段。该页面采用GET请求参数,该参数是我的实体的持久ID。
<f:metadata>
<f:viewParam name="streamid" value="#{editStreamController.stream}"
converter="#{editStreamController.streamConverter}" />
</f:metadata>
转换器用于通过从持久性服务加载id来将id转换为实体,如所描述的那样。 in here
该页面包含用于编辑“ stream ”实体的某些字段的表单。我使用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
必须通过解码,验证和模型更新阶段,以便实体首先可用,然后更新其字段。对f:viewParam
"#{editStreamController.stream.name}"
{{}}}来说,为了首先设置它的值是很自然的,因此以后要避免使用像immediate
这样的值的UIInputs的空指针问题。但是,根据to set immediate="true"
,UIViewParameter
设置与immediate
无关。
那么为什么UIViewParameter
设置无法为{{1}}配置,是否有针对这种情况的解决方法?非常感谢提前!