1 Reply Latest reply on Aug 17, 2009 6:26 PM by gs_noe

    Issues using rich:menuItem, reRender & IE7

      I am getting some strange behavior in IE7 when trying to use the reRender attribute in a rich:menuItem in a rich:toolbar. When using IE7, the first time the menuItem is selected, the action is fired successfully and the target component (an a4j:outputPanel) re-renders as expected (the element that gets re-rendered inside the outputPanel is an a4j:include that uses the rendered attribute, controlled by a Boolean bean property, so its nothing fancy). Every time the menuItem is selected after that, the action gets fired but the target component does not re-render. I have tried too many things to list and I'm at my wits end :(

      I don't have this problem in FF 3.5.2, Opera 9.64 or Chrome 2.0.172.39.

      Hopefully I've included all the relevant code below.

      Thanks for any help :)

      Using JSF 1.2, RichFaces 3.3.1, Tomcat 6.0.20

      PageController.java

      ...
       public final void testSwitchSubheader() {
       if (getRenderSubHeader()) {
       setRenderSubHeader(false);
       } else {
       setRenderSubHeader(true);
       }
       }
      ...
      


      base.xhtml
      <!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:f="http://java.sun.com/jsf/core"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:a4j="http://richfaces.org/a4j">
       <head>
       <title><h:outputText value="#{pageController.pageTitle}"/></title>
       <link rel="stylesheet" type="text/css" href="css/reset-fonts-grids.css"/>
       <link rel="stylesheet" type="text/css" href="css/richSinglePanelPage.css"/>
       <link rel="stylesheet" type="text/css" href="css/master.css"/>
       </head>
       <body>
       <div id="pageContainer">
       <div class="yui-t7 rich-page">
       <ui:insert name="pageContainer">Page Container</ui:insert>
       </div>
       </div>
       </body>
      </html>
      


      navbar.xhtml
      <!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:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:rich="http://richfaces.org/rich"
       xmlns:a4j="http://richfaces.org/a4j">
       <ui:composition>
       <rich:toolBar styleClass="navbar" id="navBar" style="padding:0;margin:0;" itemSeparator="line" >
       <rich:dropDownMenu submitMode="ajax">
       <f:facet name="label">
       <h:panelGroup>
       <h:outputText value="Testing"/>
       </h:panelGroup>
       </f:facet>
       <rich:menuItem action="#{pageController.testSwitchSubheader}" value="Switch" reRender="subHeaderContainer" limitToList="true"/>
       </rich:dropDownMenu>
       </rich:toolBar>
       </ui:composition>
      </html>
      


      home.xhtml
      <!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:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:a4j="http://richfaces.org/a4j">
      
       <ui:composition template="/templates/base.xhtml">
       <ui:define name="pageContainer">
       <h:form id="mainForm">
       <a4j:outputPanel id="headerContainer">
       <div id="mHd" class="rich-page-header hdrClass">
       <a4j:include viewId="#{pageController.pageHeaderUri}" />
       </div>
       </a4j:outputPanel>
      
       <a4j:outputPanel id="subHeaderContainer">
       <a4j:include viewId="#{pageController.subHeaderUri}" rendered="#{pageController.renderSubHeader}" id="subHeaderInclude"/>
       </a4j:outputPanel>
      
       <a4j:outputPanel id="bodyContainer">
       <div id="bd" class="bdyClass">
       <ui:include src="#{pageController.pageBodyUri}"/>
       </div>
       </a4j:outputPanel>
      
       <a4j:outputPanel id="footerContainer">
       <div id="ft" class="rich-page-footer ftrClass">
       <ui:include src="#{pageController.pageFooterUri}" />
       </div>
       </a4j:outputPanel>
       </h:form>
       </ui:define>
       </ui:composition>
      </html>
      


      homePageSubHeader.xhtml
      <!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:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:ui="http://java.sun.com/jsf/facelets">
       <ui:composition>
       <style>
       .rich-page-subheader {
       height:299px;
       background: transparent url("images/headers/mainHeaderChair950x300.jpg") repeat-x 0 0;
       }
       </style>
       <div id="sHd" class="rich-page-subheader sbrClass" >
       <h:outputText value=""/>
       </div>
       </ui:composition>
      </html>
      


        • 1. Re: Issues using rich:menuItem, reRender & IE7

          Think I found the problem:

          <style>
           .rich-page-subheader {
           height:299px;
           background: transparent url("images/header/mainHeaderChair950x300.jpg") repeat-x 0 0;
           }
          </style>
          <div id="sHd" class="rich-page-subheader sbrClass" >
           <h:outputText value=""/>
          </div>
          


          Setting the style like this doesn't make IE very happy. I should have been setting the style via CSS anyway.

          Duh.