Java JSF h:inputText验证和f:ajax呈现
一个非常简单的JSF应用程序:Java JSF h:inputText验证和f:ajax呈现,java,jsf,jsf-2,Java,Jsf,Jsf 2,一个非常简单的JSF应用程序: InputText元素已分配给验证器 f:ajax通过使用blurevent来渲染下一个元素(phoneNumber) 仅当inputText通过验证程序且isValid布尔值设置为true时,才会显示PhoneNumber 下面是代码片段 <h:form id="invOrdersWizForm"> <h:inputText id="name" maxlength=
- InputText元素已分配给验证器李>
- f:ajax通过使用
event来渲染下一个元素(phoneNumber)blur
- 仅当inputText通过验证程序且isValid布尔值设置为true时,才会显示PhoneNumber
<h:form id="invOrdersWizForm">
<h:inputText id="name" maxlength="9" styleClass="ordLabelNarrow"
validator="#{person.validatePerson}"
value="#{person.name}">
<f:ajax render="phoneLabel" event="blur"/>
</h:inputText>
<h:outputText id="phoneLabel"
rendered="#{person.isValid}"
styleClass="ordLabelWide" value="#{person.phoneNumber}" />
</h:form>
问题是,出于某种原因,phoneNumber根本没有呈现
我能让它工作的唯一方法是将f:ajax更改为render@form
<h:inputText id="name" maxlength="9" styleClass="ordLabelNarrow"
validator="#{person.validateSecurityCode}"
value="#{person.name}">
<f:ajax render="@form" event="blur"/>
</h:inputText>
由于某些原因,具有特定元素Id且基于managedBean属性呈现的f:ajax不能共存
有什么想法或建议吗
注意:当我使用listener而不是validator时,这种行为也会发生。
f:ajax
在客户端运行。render
中指定的元素必须已存在于客户端HTML DOM树中。例如,将其放入始终呈现给客户端的h:panelGroup
中
<h:panelGroup id="phoneLabel">
<h:outputText rendered="#{person.isValid}" value="#{person.phoneNumber}" />
</h:panelGroup>
rendered="#{person.isValid}"
<h:panelGroup id="phoneLabel">
<h:outputText rendered="#{person.isValid}" value="#{person.phoneNumber}" />
</h:panelGroup>