我有一个页面,我在其中呈现一些 h:panelGroup 面板。这些面板被实现为在启动时在插件注册表中注册的插件。插件 api 的一部分是一个自定义 jsf 组件,我在其中获取扩展点的注册插件,并通过路径包含它们的 facelet 模板:
<c:forEach items="#{pluginRegistry.getPlugins(point)}" var="extension">
<ui:include src="#{extension.path}" />
</c:forEach>
我包含面板的页面如下所示:
<h:panelGrid id="dashboard" columns="3">
<cmf:insertPageFragments point="dashboardExtensionPoint" />
</h:panelGrid>
对于每个面板,都有如下 facelet 模板:
<rich:panel id="caseDetailsPanel" header="panel label">
<!-- panel content -->
</rich:panel>
现在,问题是 pluginsRegistry 返回的列表中的第一个面板使用提供的 id 呈现在页面中,例如 formId:caseDetailsPanel。其余的都生成了像 formId:j_idt223 这样的 id !!!显然,如果我想重新渲染一些面板,我不能这样做。
当环境是带有 JSF 2.1、richfaces 4.2.3.Final 的 jboss AS 7.1 时,就会发生这种情况。当部署在 jboss-eap-6.1 上时,一切看起来都很好,但现在我不能使用这个 jboss 版本。
有关如何解决此问题的任何建议?