JSF中的多个AJAX侦听器

时间:2011-10-17 15:17:34

标签: java ajax jsp

我试图在事件valueChange之后触发两个侦听器,如:

<h:selectOneListbox id="premiumLevel"
   value="#{createPremiumUserDTO.premiumLevel}" size="1"
   rendered="#{createPremiumUser.step >= 2}">
      <f:selectItem itemValue="9" itemLabel="Partner (9)" />
      <f:selectItem itemValue="10" itemLabel="Musiclabel (10)" />
      <f:selectItem itemValue="11" itemLabel="Series (11)" />
      <f:selectItem itemValue="12" itemLabel="Filme (12)" />
      <f:selectItem itemValue="13" itemLabel="Syndication (13)" />
      <f:ajax listener="#{createPremiumUser.getBusinessRuleSets(createPremiumUserDTO.premiumLevel)}"
         render="businessRule" />
      <f:ajax listener="#{createPremiumUser.getEncodingParameters(createPremiumUserDTO.premiumLevel, createPremiumUserDTO.defaultBusinessRuleSetId, createPremiumUserDTO.defaultEncodingParameter)}"
         render="encodingParameter" />
</h:selectOneListbox>

但我注意到,第二个f:ajax监听器完全被忽略了。我生成的HTML仅引用第一个。如何向同一个元素添加第二个侦听器?无论如何都可能吗?

提前致谢! 罗德里戈

- 更新:

感谢Bachboss的评论,找到了解决方案。从一开始我的实现似乎是错误的。由于我的目标元素(businessRule和encodingParameter)已经调用了这些相应的侦听器,因此无需在f:ajax标记下调用它。所以......

<f:ajax render="businessRule encodingParameter" />

......就足够了,并强制两个元素重新渲染,他们会调用相应的方法。

非常感谢Bachboss! 罗德里戈

0 个答案:

没有答案