Java Can';无法从bean中找到组件

Java Can';无法从bean中找到组件,java,jsf,primefaces,javabeans,Java,Jsf,Primefaces,Javabeans,我想知道为什么我不能从我的支持bean中找到一个组件,该bean的代码是: UIComponent component = viewRoot.findComponent("form_01:meterDialog:lazyGrid"); component.toString(); jsf是: <h:form id="form_01"> <p:dialog id="meterDialog" header="Meters" widgetVar="meter_data"

我想知道为什么我不能从我的支持bean中找到一个组件,该bean的代码是:

UIComponent component = viewRoot.findComponent("form_01:meterDialog:lazyGrid");
component.toString();
jsf是:

<h:form id="form_01">
    <p:dialog id="meterDialog" header="Meters" widgetVar="meter_data"
    minimizable="true" maximizable="true" draggable="true"
    resizable="true" height="auto" width="auto" onShow="enableForm()">

        <p:remoteCommand id="cmd" name="enableForm" update="lazyGrid">
        <f:setPropertyActionListener value="#{true}"
            target="#{chartBean.formEnable}" />
        </p:remoteCommand>

        <p:panelGrid id="lazyGrid" rendered="true">
        </p:panelGrid>
    </p:dialog>
</h:form>

没有问题,但不是组件lazyGridcmd

也许您应该将
lazyGrid
设置为panelGrid id?
并关闭
UIComponent=viewRoot.findComponent(“form_01:meterDialog:lazyGrid”)中的引号

如果您的表单具有属性prependId=“false”,则可以使用实际组件id查找

由于没有设置该属性,因此必须从UIViewRoot引用。如果p:dialog是一个命名容器(我不确定),那么您必须将lazyGrid称为“form_01:meterDialog:lazyGrid”,否则称为“form_01:lazyGrid”

以下链接将为您提供更深入的了解


希望这有帮助

您的代码中没有带有
id=“lazyGrid”
的组件。是一个输入错误,因为“lostTry:
viewRoot.findComponent(“form_01:lazyGrid”);
viewRoot.findComponent("form_01:meterDialog");