Iam使用JSF2.0,其中我根据该页面上的用户活动使用ajax渲染一组组件。这样可以正常工作,但是,在组件被渲染后,iam再次根据此渲染中的用户活动执行ajax调用组件这是我的ajax调用失败的地方。我在两种情况下都做了相同的实现,但不知道为什么失败。有人可以帮我弄清楚错误吗?
以下是代码:
首先是ajax电话:
<h:commandLink id="addMultiple" value="Add" >
<f:ajax execute="addMultiple" render="additionalField " listener="#{Bean.doAddMultiple}"/>
</h:commandLink>
渲染组件:
<h:panelGroup id = "additionalField" >
<h:outputText value="New Field:" rendered="#{Bean.multiple eq 'true'}" />
<h:inputText style="width:10%" value="#{Bean.Number}" rendered="#{Bean.multiple eq 'true'}" />
<h:commandButton id="add" value = "Add" rendered="#{Bean.multiple eq 'true'}">
<f:ajax event="click" execute="add" render="textBoxes" listener="#{Bean.doaddTextboxes}"/>
</h:commandButton>
</h:panelGroup>
上面的组件很好。 我有相同形式的“textBoxes”组件以及以AJaxBehaviour事件为参数的托管bean方法。但是这里的问题是第二个AJAX调用甚至没有被触发。这里的问题是什么?
答案 0 :(得分:1)
将其更改为@ViewScoped
,一般情况下,使用atlesat @ViewScoped
更好地完成ajax ...导致在每次提交时创建新的bean实例...
另请参阅此JSF - Ajax call - What is it wrong on this code?和此The benefits and pitfalls of @ViewScoped
另外,在这里看一下 BalusC 和 Arjan Tijms 的答案JSF - Can @PostConstruct block setter method by using an ajax call?