Sorry for the length of this post, but at the moment we are clueless, so i wish to post as many details as possible.  

We are experiencing a problem with *primefaces 2.2 menu on internet explorer 9*.
We use eclipse to develop the web application, the server is a tomcat, *version 6.0.18*, and can't be upgraded due to customer requirements. We include all the required libraries inside the war, this is a customer requirement too. Below there's the (exhaustive) list of libraries we include in the application web-inf/lib folder : 

* Primefaces 2.2.1
* antlr 2.7.6
* commons-collections 3.1
* commons-fileupload 1.2.1
* commons-io 1.4
* dom4j 1.6.1
* hibernate jpa 2.0 api 1.0.0 final
* hibernate 3
* itext-xtra 5.1.3
* itextpdf 5.1.3
* javassist 3.12.0 ga
* jsf-api Mojarra JSF API Implementation 2.1.1 (20110408-FCS)
* jsf-impl (as above, verified reading the manifest)
* jstl 1.2
* jta 1.1
* log4j 1.2.15
* redmond 1.0.1
* slf4j-api 1.6.1
* slf4j-log4j12-1.6.4
* xmlworker - 1.1.1
* commons-email 1.2

Till now we have tested the application on three different secenarios:

1. Development environment : localhost tomcat 6.0.18,eclipse, ie9, http
2. Deployed application : tomcat 6.0.18, https - TAM (a ibm tivoli sso system), ie9
3. Deployed application : tomcat 6.0.18, https - TAM (a ibm tivoli sso system), firefox 9

the menu contains three root menus "new requests","work in progress" and "administration".  

For both cases 1. and 2. (involve ie9), the second menu "work in progress" disappears and reapears during navigation (clicking on other menus, clicking redirect buttons,...) , the other two remain visible. We haven't been able to find a rule nor to replicate the behaviour systematically.
As you can see from the below code we have commented the submenu setter to check there weren't some programming bug that set it to something different.  

With Firefox it never happens, it works fine.
Finally, only in case 2 (ie9 + https over tam), we got sometimes servlet rendering exceptions, till now we have got the following :

* javax.servlet.ServletException: javax.servlet.jsp.JspException: java.lang.IllegalStateException: Parent was not null, but this component not related
* javax.servlet.ServletException: Menubar must be inside a form element
* ArrayIndexOutOfBounds

**the primefaces menu which behaves weirdly gets built by code and its backing bean has a session scope**, the relevant code is listed below.   

So is this a library problem? a browser problem? A bug of our application ?
Can someone suggest some test to narrow the problem or a tool to get some hints?  

the main container page is :

```
<h:body>
<h:form id="masterForm">
    <p:growl id="msg" life="10000" showDetail="true" sticky="false" />
</h:form>
<p:layout fullPage="true">
    <p:layoutUnit position="top" height="90" id="layUnitNorth"
        resizable="false" closable="false" collapsible="false"  
        scrollable="null" zindex="199">
        <ui:insert name="header">
            <div id="userInfoPanel">
                <ui:include src="userinfo.xhtml" />
            </div>              
            <ui:include src="menu.xhtml" /> 
        </ui:insert>
    </p:layoutUnit>

    <p:layoutUnit position="center" scrollable="true">
        <ui:insert name="content">
            <p:layoutUnit position="center">
            </p:layoutUnit>
        </ui:insert>
    </p:layoutUnit>
</p:layout>

```

the menu page is :

```
<ui:composition>
<h:form id="menuForm">
    <p:menubar effect="slide" styleClass="menuCustom">
        <p:submenu label="New" >
            <p:menuitem value="new requests" onclick="navigateTo('Richieste/ListaRichieste.xhtml?canale=0');" />
            <p:menuitem value="channel 1" onclick="navigateTo('Richieste/ListaRichieste.xhtml?canale=1');" />
            <p:menuitem value="channel 2" onclick="navigateTo('Richieste/ListaRichieste.xhtml?canale=2');" />
            <p:menuitem value="channel 3" onclick="navigateTo('Richieste/ListaRichieste.xhtml?canale=3');" />
        </p:submenu>
        <p:submenu label="work in progress"
            binding="#{menuCtrl.boxSubMenu}">
        </p:submenu>
        <p:submenu label="administration" rendered="#{userInfo.admin}">
            <p:menuitem value="Customers" url="#" />
            <p:menuitem value="Templates" url="#" />
            <p:menuitem value="Digital signature" url="#" />
        </p:submenu>
    </p:menubar>
</h:form>

```

the menuCtrl is a session bean:

```
public class MenuCtrl {

final static Logger log = Logger.getLogger(MenuCtrl.class);

private Submenu boxSubMenu;

public void setBoxSubMenu(Submenu boxSubMenu) {
    //this.boxSubMenu = boxSubMenu;
}

public Submenu getBoxSubMenu() {
    return boxSubMenu;
}

public MenuCtrl() {
    try {
        boxSubMenu = BoxMenuHelper.getBoxSubMenu();
    } catch (Exception ex) {            
        String msg = "Impossibile creare il menu di navigazione nei box";
        log.error(msg, ex);
        showMessage(FacesMessage.SEVERITY_ERROR, msg);
    }
}

```

}

the submenu factory method:

```
    public static Submenu getBoxSubMenu() throws Exception{
    CatalogazioneRepository br = new CatalogazioneRepository();
    Submenu sm = new Submenu();
    try {
        for (Catalogazione box : br.getOnlyBoxes()) {
            MenuItem item = new MenuItem();
            item.setId("boxMenuItem" + box.getId());
            item.setValue(box.getNome());
            item.setOnclick("navigateTo('Box/ListaRichieste.xhtml?box="+ box.getId() +"');");
            sm.getChildren().add(item);
        }
        return sm;
    } catch (Exception ex) {
        String msg = "Errore durante la creazione del menu di navigazione nei box";
        log.error(msg, ex);
        throw new Exception(msg, ex);
    }
}

```