Rich Rerender: вкладка Contnet - PullRequest
0 голосов
/ 25 января 2011

Я пытаюсь обеспечить поддержку web2.0 для моего приложения. Для этого я хочу предоставить rich: tabpanel, которая может динамически содержать количество вкладок. Пользователь может добавлять и удалять вкладки. Для этого я использую c: foreachfor представляет список rich: tab. Вкладка содержит список rich: панель содержит подробности. Панель содержит только краткое содержание. Нажав на ссылку read more, пользователь может прочитать весь контент. Для этого мне нужно повторно отобразить a4j: outputpanel, который содержит список rich: panel. Но я не могу этого сделать. Потому что я использовал c: freach для рендеринга списка вкладок. Так что я не могу получить точный идентификатор a4j: outputpanel, который содержит списокrich: panel.Apj: outputpanel не позволяет использовать выражения el.Мой фрагмент кода ниже,

<c:forEach items="#{Home.tabList}" var="homeBean" varStatus="status">
<el:define value="${status.count}" var="rowIndex"/>
 <rich:tab id="homeTab" label="#{homeBean.header}"
                        name="#{homeBean.header}" switchType="client"
                        onlabelclick="coinSliderFunction('coin-slider#{rowIndex}')">
<a4j:outputPanel id="subHeaderPanel">
<h:panelGrid columns="3" cellpadding="3" cellspacing="3"
 id="detailGrid"                                                                   rendered="#{!Home.subHeaderDetailedContentPanelRendered}"
                                                                   columnClasses="layoutContentColumnClass,
                                                                     layoutContentColumnClass,layoutContentColumnClass">

 <%--SubHeader List--%>
 <c:forEach items="#{homeBean.subHeaderBeanList}" var="subHeaderBean" varStatus="subHeaderStatus">
  <rich:panel header="#{subHeaderBean.header}" id="subHeaderPanels">
 <h:outputText id="outputText" value="#{subHeaderBean.briefContent}" escape="false"/>
  <a4j:commandLink value="Read More" id="readMoreLink" 
action="#{Home.navigationHandler}" reRender="subHeaderPanel">    
 <a4j:actionparam name="headerActionParam" value="#{homeBean.header}" assignTo="#{Home.headerName}"/>
<a4j:actionparam name="subHeaderActionParam" value="#{subHeaderBean.header}" assignTo="#{Home.subHeaderName}"/>

</a4j:commandLink>
</rich:panel>
 </c:forEach>
 </h:panelGrid>
  <%--SubHeader Detail Panel--%>
  <h:panelGrid rendered="#{Home.subHeaderDetailedContentPanelRendered}" id="subHeaderGrid">
  <h:outputText id="detailedContent" value="#{Home.subHeaderDetailedContent}" escape="false"/>
 <f:verbatim><center></f:verbatim>                    
 <a4j:commandLink id="backLinks" value="#{platform.backButtonLabel}"
  action="#{Home.backButtonAction}"
                                                                                reRender="leftOutputPanel"/>
 <f:verbatim></center></f:verbatim>
                                               </h:panelGrid>                                                            
                                                        </a4j:outputPanel>                                                       
</rich:tab>
</c:forEach>   

Как мне этого добиться? Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 25 января 2011

Поскольку вы не можете определить идентификатор панелей вкладок, отображаемых в цикле forEach, необходимо переопределить панель Grid detailGrid . Позаботьтесь о том, чтобы кэшировать все значения, показанные на вкладках в ваших управляемых компонентах. Если вы сделаете это, вызов базы данных не требуется, и перерисовка всех вкладок будет быстрой.

...