<ui:define name="content">
<f:view>
<h:form id="myForm" styleClass="form" >
<p:dataTable var="provider" id="ss" value="#{providerSelectBean.providerList}" rowKey="#{provider.license}"
selection="#{providerSelectBean.selectedProvider}" selectionMode="single">
<p:ajax listener="#{providerSelectBean.onRowSelect}"
update=":myForm:output"event="rowSelect"/>
<p:column sortBy="#{provider.license}" width="110" >
<f:facet name="header">
<h:outputText value="License#" />
</f:facet>
<h:outputText value="#{provider.license}" />
</p:column>
<p:column sortBy="#{provider.prgName}" width="110" >
<f:facet name="header">
<h:outputText value="Program Name" />
</f:facet>
<h:outputText value="#{provider.prgName}" />
</p:column>
</p:dataTable><br/>
<p:panelGrid id="output" >
<h:outputText value="License" />
<h:outputText value="#{provider.license}" />
</p:panelGrid>
</h:form>
</f:view>
</ui:define>
这是我第一次使用 JSF2.0 和 primefaces 3.4.1 以及
<p:ajax update
给出错误javax.faces.FacesException: Cannot find component with identifier
":myForm:output" referenced from "myForm:ss"
最佳答案
尝试检查生成的 HTML 代码并查看为您的 panelGrid 生成的实际 ID 并更新该 ID。如果它恰好是动态的,你总是可以使用 JQuery CSS 选择器(我发现自己经常这样做)。在你的情况下,你可以这样:
update="@([id$=output])"
这个表达式代表每个 id 以 output 结尾的组件。查看 JQuery 文档以获取更多信息。
关于jsf - Primefaces - 无法在数据表之外找到带有标识符的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499642/