【发布时间】:2018-11-25 07:22:04
【问题描述】:
我们确实有一个小页面,它使用 viewParam 将给定的 Id 转换为具体的对象。此转换器在离开(模糊)输入文本字段时调用,该字段已验证。为什么?我可以重做这个,以便每次都不会调用转换器吗?
这很烦人,因为转换器为 BackingBean 中的相应对象调用 set-method,如果页面第一次被调用以创建此对象,则此 bean 为 null。
<f:metadata>
<f:viewParam name="id" value="#{bean.object}"
converter="#{objectConverter}"
converterMessage="#{msgs['converter.msg.object']}"/>
<f:viewAction action="#{bean.init}"/>
</f:metadata>
<p:inputText id="text" value="#{cc.attrs.value}"
styleClass="inputTextValidated"
required="#{cc.attrs.required}"
requiredMessage="#{cc.attrs.requiredmessage}"
label="text" validatorMessage="#{cc.attrs.msg}" title="#cc.attrs.title}"
readonly="#{cc.attrs.readOnly}">
<cc:insertChildren/>
<p:ajax update="msg_text" event="blur"/>
</p:inputText>
<p>
<p:message id="msg_text" for="text" display="msg"/>
</p>
如果我们不使用转换器而仅使用 viewAction 将 Id 转换为相应的对象(或创建一个新对象,如果适用),一切都很好。这是解决此问题的唯一/正确解决方案吗?
我们确实在 CDI 中使用 primefaces 6.1。转换器是实现转换器接口的@Named 和@ApplicationScoped bean。
在输入文本字段周围使用 p:fragment 也没有帮助。
【问题讨论】:
标签: jsf primefaces jsf-2.2