Jsf 2 重复ID错误,部分状态保存和MyFaces CODI

Jsf 2 重复ID错误,部分状态保存和MyFaces CODI,jsf-2,primefaces,myfaces,codi,Jsf 2,Primefaces,Myfaces,Codi,我正在使用PrimeFaces3.3、MyFaces+CODI、OpenWebBeans和Tomcat7开发一个JSF web应用程序 显示指定页面(所有后续页面操作)后,我收到重复Id错误。使用debug分析viewroot时,我确实找不到任何重复的id,但我发现'WindowContextIdHolderComponent'具有作为重复抛出的id(j_id6) 自从我将部分状态保存为“true”后,我就开始出现这个问题 我有一个主视图,它有选项卡,每个选项卡中都有菜单,每个菜单操作使用 下面

我正在使用PrimeFaces3.3、MyFaces+CODI、OpenWebBeans和Tomcat7开发一个JSF web应用程序

显示指定页面(所有后续页面操作)后,我收到重复Id错误。使用debug分析viewroot时,我确实找不到任何重复的id,但我发现'WindowContextIdHolderComponent'具有作为重复抛出的id(j_id6)

自从我将部分状态保存为“true”后,我就开始出现这个问题

我有一个主视图,它有选项卡,每个选项卡中都有菜单,每个菜单操作使用

下面是我的应用程序的代码和结构

主页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<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">

<ui:composition template="/templates/simple3section.xhtml">

<ui:define name="headerarea">
    Banner Comes Here
</ui:define>
<ui:define name="contents">
<p:tabView dynamic="false" cache="false" id="mainTab">
    <p:tab title="Home">
        <ui:include src="employeehome.xhtml" />
    </p:tab>
    <p:tab title="Academics">
        <ui:include src="academicmain.xhtml" /> 
    </p:tab>
    <p:tab title="Transport">
        <ui:include src="transportmain.xhtml" />
    </p:tab>
    <p:tab title="Administration">
        <ui:include src="adminmain.xhtml" />
    </p:tab>
    <p:tab title="Finance" disabled="true">
        <ui:include src="financemain.xhtml" />
    </p:tab>
    <p:tab title="Shop" >
        <ui:include src="shopmain.xhtml" />
    </p:tab>        
</p:tabView>
</ui:define>    
</ui:composition>
</html>

班纳来了
Adminmain.xhtml页面(选项卡页面)


下面是导致重复Id错误的adminGallery页面(所有其他页面都没有此问题)


此页面显示正确,但显示此页面后的所有请求都失败,出现重复Id错误

我的豆子是鳕鱼

根据关于重复Id的各种建议答案,我认为只有ui:include是问题的潜在根源。但由于我对选项卡中或跨选项卡的其他页面没有任何问题,我怀疑这不是问题所在


请说明可能存在的问题和潜在的修复方法。

您使用的是哪个版本的MyFaces Core?我刚刚发现,它似乎不是CODI bug。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>

</h:head>
<h:body>
<div>
    <h:form>
        <p:menubar style="margin-bottom:5px;">
            <p:menuitem value="Employees" icon="ui-icon-star" ajax="true"
                actionListener="#{homeNavigationBean.setAdminPage('employeeinfo')}"
                update=":mainTab:adminContent">
            </p:menuitem>
            <p:menuitem value="Employee Authorization" icon="ui-icon-star" ajax="true"
                actionListener="#{homeNavigationBean.setAdminPage('authorization')}"
                update=":mainTab:adminContent">
            </p:menuitem>
            <p:menuitem value="Notices" icon="ui-icon-star" ajax="true"
                action="#{homeNavigationBean.setAdminPage('notices')}"
                actionListener="#{noticesBean.loadNotices(false)}"
                update=":mainTab:adminContent">
            </p:menuitem>
            <p:menuitem id="updgallery" value="Gallery" icon="ui-icon-star" ajax="true"  
                actionListener="#{homeNavigationBean.setAdminPage('adminGallery')}" 
                update=":mainTab:adminContent">
            </p:menuitem>
            <p:menuitem value="Location" icon="ui-icon-star" ajax="true"
                action="#{homeNavigationBean.setAdminPage('location')}"
                actionListener="#{locationBean.loadLocation}"
                update=":mainTab:adminContent">
            </p:menuitem>
            <p:menuitem value="Department" icon="ui-icon-star" ajax="true"
                action="#{homeNavigationBean.setAdminPage('department')}"
                actionListener="#{departmentBean.loadDepartment}"
                update=":mainTab:adminContent">
            </p:menuitem>
        </p:menubar>
    </h:form>
</div>
<div>
    <p:outputPanel id="adminContent" layout="block" style="border-style: none; padding: 0;">
            <ui:include src="admin/#{homeNavigationBean.adminPage}.xhtml" />
    </p:outputPanel>
    </div>
   </h:body>
   </html>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>

</h:head>
<h:body>
<p:panelGrid style="width:98%;">
    <f:facet name="header">
        <p:row>
            <p:column colspan="2">
        <h:outputText value="Image Gallary"></h:outputText>  
    </p:column>
        </p:row>
    </f:facet>
    <p:row>
        <p:column style="width:200px;vertical-align:top">
            <h:form id="nodeForm">
                <p:tree id="nodeTree" value="#{galleryBean.imageTree}" var="node"
                    selectionMode="single" selection="#{galleryBean.selectedNode}" 
                    style="width:160px;border-style:none;padding:0;margin:0;">
                    <p:ajax event="select" listener="#{galleryBean.loadImages}"
                        update=":mainTab:imageForm:galaPanel" />
                    <p:treeNode id="treeNode">
                        <h:outputText value="#{node}"></h:outputText>
                    </p:treeNode>
                </p:tree>
            </h:form>
        </p:column>
        <p:column>
            <h:form id="imageForm">
                <p:outputPanel id="galaPanel">
                    <p:galleria var="image" id="imgGala"
                        value="#{galleryBean.imageList}" panelWidth="470"
                        style="padding:0;margin:0;">
                        <p:graphicImage value="#{imageHelper.getFilePhotoStream()}"
                            width="450">
                            <f:param name="imageName" value="#{image}" />
                        </p:graphicImage>
                    </p:galleria>
                </p:outputPanel>
            </h:form>
        </p:column>
    </p:row>

    <p:row>
        <p:column>
            <h:form id="nodeAddForm">
                <p:messages id="treemsgs" style="padding:0;margin:0;" />
                <p:panelGrid columns="2" style="width:100%">
                    <h:outputText value="Name:*" />
                    <p:inputText id="nodename" value="#{galleryBean.name}"
                        label="Node Name" />

                    <h:outputText value="External Visible:" />
                    <p:selectBooleanCheckbox id="extcheck"
                        value="#{galleryBean.externalvisible}" />
                    <f:facet name="footer">
                        <p:commandButton type="Submit" value="Add New Node"
                            actionListener="#{galleryBean.addImageNode}" ajax="true"
                            process="nodename extcheck" update=":mainTab:nodeForm:nodeTree treemsgs" />
                    </f:facet>
                </p:panelGrid>
            </h:form>
        </p:column>
        <p:column>
            <h:form id="imageAddForm">
                <p:messages id="imgmsgs" />
                <p:fileUpload mode="advanced"
                    fileUploadListener="#{galleryBean.addPhotoFile}"
                    allowTypes="/(\.|\/)(gif|jpe?g)$/" sizeLimit="1000000"
                    invalidSizeMessage="Please limit photo size to 1000Kb"
                    update=":mainTab:imageForm:galaPanel imgmsgs" />
            </h:form>
        </p:column>
    </p:row>
</p:panelGrid>
<p:spacer height="20"/>
</h:body>
</html>