2011-01-25 3 views
0

Я попытался предоставить поддержку web2.0 для своего приложения. Для этого я хочу предоставить rich: tabpanel, который может содержать количество вкладок динамически. Пользователь может добавлять и удалять вкладки. Для этого Я использую c: foreach для представления списка rich: tab.The вкладка содержит список rich: панель содержит подробности. Панель содержит только краткий контент. Щелкнув ссылку «Читать дальше», пользователь может прочитать полный контент. Для этого я нужно переустановить a4j: панель вывода, которая содержит список rich: panel.But, я не могу этого сделать. Потому что я использовал c: freach для отображения списка вкладок. Так что я не могу получить точный идентификатор a4j : панель вывода, содержащая список: панели. Панель a4j: выход не разрешает выражения el. Мой фрагмент кода ниже,rerender rich: tab contnet

<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

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

Смежные вопросы