PrimeFaces 3.4 JSF 2.0中按id查找组件
我想要一个在PrimeFaces 3.4中按id查找PrimeFaces 3.4 JSF 2.0中按id查找组件,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我想要一个在PrimeFaces 3.4中按id查找UIComponent的方法。 我已经找到了一个方法来实现这一点,但它有一个方法visitTree(在PrimeFaces 5.2中可用),而PrimeFaces 3.4中不可用 请有人帮我在下面的XHTML中找到面板对象 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http:
UIComponent
的方法。
我已经找到了一个方法来实现这一点,但它有一个方法visitTree(在PrimeFaces 5.2中可用),而PrimeFaces 3.4中不可用
请有人帮我在下面的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版本。它是特定于JSF2.0的。它在任何运行在JSF2.x之上的PrimeFaces版本上都应该同样有效。只有在实际运行JSF1.x时,它才会失败
即使如此,标准JSFAPI已经为该作业提供了,它只需要客户端ID,而不是组件ID
UIViewRoot view = FacesContext.getCurrentInstance().getViewRoot();
UIComponent component = view.findComponent("form:pnl");
// ...
尽管如此,这是解决您问题的错误方法。您似乎对执行setRendered(boolean)
调用它感兴趣。你根本不应该那样做。您不应该对模型侧的视图感兴趣。反过来做。相反,您应该设置一个模型值,视图应该反过来绑定到该模型值
以下是一个启动示例:
<h:form>
<p:panel rendered="#{not bean.hidden}">
<h:outputText value="Yahoooo...." />
</p:panel>
<p:commandButton value="Toggle" action="#{bean.toggle}" update="@form" />
</h:form>
<h:form>
<p:panel rendered="#{not bean.hidden}">
<h:outputText value="Yahoooo...." />
</p:panel>
<p:commandButton value="Toggle" action="#{bean.toggle}" update="@form" />
</h:form>
private boolean hidden;
public void toggle() {
hidden = !hidden;
}
public boolean isHidden() {
return hidden;
}