我在同一页面上遇到多个ajax调用问题。对“模糊”事件的第一个ajax调用会填充下拉列表。然后,当单击该按钮时,该页面应根据表单中的值显示“otherElement”。问题是当“term”处于最后一次ajax调用的执行时,它还会导致FormBean中的术语,CompanyCode和fileNumber为null。当我静态填充这些术语时,它可以正常工作。
<h:form id="createRequest">
<h:selectOneMenu id="CompanyCode" required="true"
value="#{FormBean.CompanyCode}">
<f:selectItems value="#{utility.Companies}" />
</h:selectOneMenu>
<br/>
<h:inputText id="fileNumber" styleClass="field"
value="#{FormBean.fileNumber}"
required="true">
<f:ajax event="blur" execute="CompanyCode fileNumber"
render="term" />
</h:inputText>
<br />
<h:selectOneMenu id="term" required="true"
value="#{FormBean.term}">
<f:selectItems value="#{FormBean.terms}" />
</h:selectOneMenu>
<br />
<h:commandButton class="button" style="button"
value="#{resources['btn.common.submitRequest']}">
<f:ajax event="click"
execute="CompanyCode fileNumber term"
render="otherElement" />
</h:commandButton>
</h:form>
有什么想法吗?感谢
答案 0 :(得分:2)
您的bean可能是请求作用域,导致它在每个HTTP请求(ajax或不是)上一次又一次地重新创建。 ajax请求设置的所有更改/属性在后续请求中丢失。您需要将bean放在视图范围内。
@ManagedBean
@ViewScoped
public class FormBean implements Serializable {
// ...
}
这样,只要您从操作方法返回void
或null
,bean就会生效。