ICEfaces
  1. ICEfaces
  2. ICE-11562

ace:fileEntry inside ace:tabSet causes other tabs not to render

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-4.3.0.GA_P05, EE-3.3.0.GA_P11
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      Any
    • Workaround Description:
      Use ace:tabSet in client-side mode (clientSide="true").

      Description

      When an ace:fileEntry is contained in a tab in ace:tabSet in server-side mode, after switching to this tab, it becomes impossible to switch to other tabs afterwards. This conflict is caused by the modifications that both components make to the containing form to suit their needs.

        Issue Links

          Activity

          Hide
          Arturo Zambrano added a comment - - edited

          An ace:tabSet and an ace:fileEntry component cannot share the same form, because both components modify the containing form in their own ways. However, there's a way to have an ace:fileEntry component inside a server-side ace:tabSet tab pane and be able to switch to any tab seamlessly and have the ace:fileEntry work normally. This can be achieved by using an ace:tabSetProxy component.

          An ace:tabSetProxy component is used in conjunction with a server-side ace:tabSet component that is not inside of a form. The ace:tabSetProxy component is placed inside a form instead of the ace:tabSet component to handle the server communication on its behalf. Then, the ace:fileEntry component can have its own, exclusive form inside the tab pane where it is contained and function normally without conflicting with the ace:tabSet functionality.

          Here is a basic example:

          <h:form id="tab-form">
              <ace:tabSetProxy for=":myTabSet" />
          </h:form>
          
          <ace:tabSet id="myTabSet" clientSide="false">
          
              <ace:tabPane id="pane1">
                  <f:facet name="label">My 1st Tab</f:facet>
                  <h:outputText value="First Tab Body" />
              </ace:tabPane>
              
              <ace:tabPane id="pane2">
                  <f:facet name="label">My 2nd Tab</f:facet>
                  <h:outputText value="Second Tab Body" />
              </ace:tabPane>
              
              <ace:tabPane id="pane3">
                  <f:facet name="label">My 3rd Tab</f:facet>
                  <h:outputText value="Third Tab Body" />
              </ace:tabPane>
              
              <ace:tabPane id="pane4">
                  <f:facet name="label">My File Entry Tab</f:facet>
                  
                      <h:form id="file-form">
                          <ace:fileEntry id="file-entry" multiple="true"/>
                      </h:form>
                      
              </ace:tabPane>
          </ace:tabSet>
          

          With this setup, each tab pane could have its own, exclusive form, if desired. More information can be found on the wiki page for ace:tabSetProxy:

          https://www.icesoft.org/wiki/display/ICE/TabSetProxy

          Show
          Arturo Zambrano added a comment - - edited An ace:tabSet and an ace:fileEntry component cannot share the same form, because both components modify the containing form in their own ways. However, there's a way to have an ace:fileEntry component inside a server-side ace:tabSet tab pane and be able to switch to any tab seamlessly and have the ace:fileEntry work normally. This can be achieved by using an ace:tabSetProxy component. An ace:tabSetProxy component is used in conjunction with a server-side ace:tabSet component that is not inside of a form. The ace:tabSetProxy component is placed inside a form instead of the ace:tabSet component to handle the server communication on its behalf. Then, the ace:fileEntry component can have its own, exclusive form inside the tab pane where it is contained and function normally without conflicting with the ace:tabSet functionality. Here is a basic example: <h:form id= "tab-form" > <ace:tabSetProxy for= ":myTabSet" /> </h:form> <ace:tabSet id= "myTabSet" clientSide= "false" > <ace:tabPane id= "pane1" > <f:facet name= "label" > My 1st Tab </f:facet> <h:outputText value= "First Tab Body" /> </ace:tabPane> <ace:tabPane id= "pane2" > <f:facet name= "label" > My 2nd Tab </f:facet> <h:outputText value= "Second Tab Body" /> </ace:tabPane> <ace:tabPane id= "pane3" > <f:facet name= "label" > My 3rd Tab </f:facet> <h:outputText value= "Third Tab Body" /> </ace:tabPane> <ace:tabPane id= "pane4" > <f:facet name= "label" > My File Entry Tab </f:facet> <h:form id= "file-form" > <ace:fileEntry id= "file-entry" multiple= "true" /> </h:form> </ace:tabPane> </ace:tabSet> With this setup, each tab pane could have its own, exclusive form, if desired. More information can be found on the wiki page for ace:tabSetProxy : https://www.icesoft.org/wiki/display/ICE/TabSetProxy

            People

            • Assignee:
              Arturo Zambrano
              Reporter:
              Arturo Zambrano
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: