gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:26:12 25 4
gpt4 key购买 nike

我在处理同一页面上的多个 ajax 调用时遇到了问题。对“blur”事件的第一个 ajax 调用会填充一个下拉列表。然后当单击按钮时,页面应该根据表单中的值显示“otherElement”。问题是当“term”在执行最后一个 ajax 调用时,它还会导致 FormBean 中的 term、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>

有什么想法吗?谢谢

最佳答案

您的 bean 可能是请求范围的,这导致它在每个 HTTP 请求(ajax 与否)上一次又一次地重新创建。 ajax 请求设置的所有更改/属性都会在后续请求中丢失。您需要将 bean 放在 View 范围内。

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

这样,只要您从操作方法返回 voidnull,bean 就会一直存在。

另见:

关于ajax - 多个 ajax 调用清除了托管 bean 中先前提交的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5885308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com