JSF在执行ajax更新时重置字段
我在JSF页面上遇到了一个问题,我在first billing first name字段中键入了一个名称。如果我点击复制账单地址复选框;这将停止呈现delivery address面板,并通过ajax将其隐藏,我刚刚在第一个字段中键入的值将重置为其以前的状态 JSF页面JSF在执行ajax更新时重置字段,ajax,jsf-2,Ajax,Jsf 2,我在JSF页面上遇到了一个问题,我在first billing first name字段中键入了一个名称。如果我点击复制账单地址复选框;这将停止呈现delivery address面板,并通过ajax将其隐藏,我刚刚在第一个字段中键入的值将重置为其以前的状态 JSF页面 <h:form> <p:inputText value="#{addressBean.billingAddress.firstName}" required="true"/ > <
<h:form>
<p:inputText value="#{addressBean.billingAddress.firstName}" required="true"/ >
<p:selectBooleanCheckbox value="#{addressBean.copyBillingAddress}" id="duplicateBillingDetails">
<f:ajax render="@form" />
</p:selectBooleanCheckbox>
<h:panelGrid rendered="#{not addressBean.copyBillingAddress}" columns="3">
<p:inputText value="#{addressBean.deliveryAddress.firstName}"/>
</h:panelGrid>
<p:commandButton value="Checkout" action="#{addressBean.saveAddress}"/>
</h:form>
默认情况下,
只处理当前组件,如execute=“@this”
所示。因此,所有其他输入组件的提交值将不会被处理,因此不会更新到模型中。但是,您可以通过render=“@form”
强制使用所有其他输入组件的当前(未更新!)模型值刷新表单的整个HTML输出
假设您的目的是不必要地转换/验证/更新所有其他输入组件,那么最好使render
属性更具体。只更新真正需要更新的内容,而不是整个表单
<p:selectBooleanCheckbox value="#{addressBean.copyBillingAddress}" id="duplicateBillingDetails">
<f:ajax render="copyBillingAddress" />
</p:selectBooleanCheckbox>
<h:panelGroup id="copyBillingAddress">
<h:panelGrid rendered="#{not addressBean.copyBillingAddress}" columns="3">
<p:inputText value="#{addressBean.deliveryAddress.firstName}"/>
</h:panelGrid>
</h:panelGroup>
请注意,这可能会不必要地触发这些输入组件的转换/验证
另见:
<p:selectBooleanCheckbox value="#{addressBean.copyBillingAddress}" id="duplicateBillingDetails">
<f:ajax render="copyBillingAddress" />
</p:selectBooleanCheckbox>
<h:panelGroup id="copyBillingAddress">
<h:panelGrid rendered="#{not addressBean.copyBillingAddress}" columns="3">
<p:inputText value="#{addressBean.deliveryAddress.firstName}"/>
</h:panelGrid>
</h:panelGroup>
<f:ajax execute="@form" render="@form" />