多个ajax调用清除托管bean中先前提交的值

时间:2011-05-04 14:47:41

标签: ajax jsf

我在同一页面上遇到多个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>

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:2)

您的bean可能是请求作用域,导致它在每个HTTP请求(ajax或不是)上一次又一次地重新创建。 ajax请求设置的所有更改/属性在后续请求中丢失。您需要将bean放在视图范围内。

@ManagedBean
@ViewScoped
public class FormBean implements Serializable {
    // ...
}

这样,只要您从操作方法返回voidnull,bean就会生效。

另见: