我想要一个在PrimeFaces 3.4中通过id找到UIComponent
的方法。 我已经找到了一个方法来做到这一点,但它有一个方法visitTree(在PrimeFaces 5.2中可用),PrimeFaces 3.4不可用。通过PrimeFaces 3.4中的id找到组件id JSF 2.0
请有人可以帮我找到面板对象在下面的XHTML。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<h:form id="form">
<p:panel id="pnl"><h:outputText value="Yahoooo...."></h:outputText></p:panel>
<p:commandButton ajax="false" value="Toggle" actionListener="#{myBean.mytoggle}"/>
</h:form>
</h:body>
</html>
Primefaces 5.2工作方法
public UIComponent findComponent(final String id) {
FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot root = context.getViewRoot();
final UIComponent[] found = new UIComponent[1];
root.visitTree(new FullVisitContext(context), new VisitCallback() {
@Override
public VisitResult visit(VisitContext context, UIComponent component) {
if(component.getId().equals(id)){
found[0] = component;
return VisitResult.COMPLETE;
}
return VisitResult.ACCEPT;
}
});
return found[0];
}