以下代码是与ajax组件一起使用的简单表单:
<h:form id="loginform">
<h:inputText id="username">
<f:ajax event="blur" execute="loginform:username loginform:loginbutton" ... />
</h:inputText>
<h:inputText id="password">
<f:ajax event="blur" execute="loginform:password loginform:loginbutton" ... />
</h:inputText>
<h:commandButton id="loginbutton" value="login" action="#{indexBean.authentication()}" />
</h:form>
我知道execute属性是一个空格分隔的ID列表,用于应该包含在Ajax请求中的组件。
我可以使用AjaxBehaviorEvent.getComponent()
方法访问辅助bean的源组件,但是如何访问其余组件?
答案 0 :(得分:2)
可由PartialViewContext#getExecuteIds()
获取。
FacesContext context = FacesContext.getCurrentInstance();
Collection<String> executeIds = context.getPartialViewContext().getExecuteIds();
// ...
然后,您可以使用UIViewRoot#findComponent()
按客户端ID查找组件。
for (String executeId : executeIds) {
UIComponent component = context.getViewRoot().findComponent(executeId);
// ...
}