我试图在事件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! 罗德里戈