JSF 2.0:从呈现组件到托管bean失败的Ajax调用

时间:2012-12-11 08:06:18

标签: ajax jsf-2 listener

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调用甚至没有被触发。这里的问题是什么?

1 个答案:

答案 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?