3 Replies Latest reply on Dec 15, 2009 5:28 PM by Nick Belaevski

    What about switchType=ajax on modalPanels ?

    gonzalad Apprentice

      Hello,

       

      Lately, I'm mostly (80% of times) rendering my rich:modalPanels in ajax mode [1] :

      - a4j:commandButton calls a backing bean method, and rerenders the a4j:outputPanel surrounding  rich;modalPanel.

           oncomplete js handler call Richfaces.showPanel.

      - the rich:modalPanel is inside a a4j:outputPanel nd its rendered attribute points to a backing bean property.

       

      This is because each modalPanels weights more or less 5 ko (I've seen 4 different application and it was always at least 5 ko).

      This code is repetitive.

       

      Could it be possible to add a switchType attribute on rich:calendar, the meaning of which would be :

      1. if switchType=client, behaviour unchanged.
      2. if switchType=ajax, Richfaces.showModal would make an ajax call, rerender the rich:modalPanel (so rich:modalPanel would always be contained in an invisible <span> or shting like this) and show it.

       

      When Richfaces.hideModalPanel is called, there would be no ajax call (we're never rerendering the modalPanel on close, saving a server round trip).

       

      So, with switchType="ajax", the following code :

       

      {code}

       

      <rich:panel>


        <h:form>


          ...


          <a4j:commandLink action="#{orderEntryController.createProperty}"


            value="Add a property" reRender="propertyDialogPanel"


            oncomplete="Richfaces.showModalPanel('propertyDialog')"/>


          ...


      </h:form>


      </rich:panel>

      ...

      <a4j:outputPanel id="propertyDialogPanel" layout="inline">


        <rich:modalPanel id="propertyDialog" width="400" height="400">

          <f:facet name="header">Edit property</f:facet>

          <h:form>


            <p>Hello world</p>


            <p><a href="javascript:Richfaces.hideModalPanel('propertyDialog')">Cancel</a></p>


          </h:form>


        </rich:modalPanel>


      </a4j:outputPanel>

       

      {code}

       

       

      Could be changed to :

      {code}

      <rich:panel>

        <h:form>

          ...

          <a4j:commandLink action="#{orderEntryController.createProperty}"

             value="Add a property" onclick="Richfaces.showModalPanel('propertyDialog')"/>

          ...

        </h:form>

      </rich:panel>

      ...

      <rich:modalPanel id="propertyDialog" switchType="ajax" width="400" height="400">

        <f:facet name="header">Edit property</f:facet>

        <h:form>

          <p>Hello world</p>

          <p><a href="javascript:Richfaces.hideModalPanel('propertyDialog')">Cancel</a></p>

        </h:form>

      </rich:modalPanel>

      {code}

      One caveat though, when I call Richfaces.showModal in my a4j:commandLink would it post the surrounding form (bad bad !).

       

      What do you think ?