JSF 包含和重复 HTML ID

das*_*ort 2 jsf facelets include

我有一个主要的 HTML 页面,其中包括detail.xhtmlduo.xhtml

现在duo.xhtml还包括detail.xhtml,这会导致重复的 ID,当然它不起作用。我能做些什么来解决这个问题?我不想管理冗余代码。

主要的:

<ui:composition ...>
  <ui:define name="center">
    <ui:insert name="insertDuo">
      <ui:include src="/includes/duo.xhtml" />
    </ui:insert>
...
<p:dialog header="x" widgetVar="detDialog" id="dlg" modal="true" appendTo="@(body)">
  <ui:insert name="insertDetail">
    <ui:include src="/includes/detail.xhtml" />
  </ui:insert>
Run Code Online (Sandbox Code Playgroud)

二人组:

<ui:composition>
    <p:dialog header="y" widgetVar="newDuoDialog" id="newDuoDlg" modal="true" >
        <p:layout id="layout">

            <p:layoutUnit position="west">
                <ui:insert name="insertDetailStmt">
                    <h:form id="stmtDetailForm">
                        <ui:include src="/includes/detail.xhtml" />
                    </h:form>
                </ui:insert>
            </p:layoutUnit>
Run Code Online (Sandbox Code Playgroud)

细节:

<p:accordionPanel id="accordion">
Run Code Online (Sandbox Code Playgroud)

组件参考:

<p:commandButton value="z" update=":accordion:duoDlgForm2:pickList"/>
Run Code Online (Sandbox Code Playgroud)

das*_*ort 5

感谢 BalusC,我能够解决这个问题。只需使用

<f:subview id="fromMain">
    <ui:include src="/includes/regelDetail.xhtml" />
</f:subview>
Run Code Online (Sandbox Code Playgroud)

当从 main 引用时,元素的名称是fromMain:accordion