Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PrimeFaces 3.4 JSF 2.0中按id查找组件_Jsf_Jsf 2_Primefaces - Fatal编程技术网

PrimeFaces 3.4 JSF 2.0中按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:

我想要一个在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://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;
}