2011-01-25 56 views
0

我试着为我application.For,我想提供丰富的web2.0的支持:一个tabpanel可以包含标签dynamically.User的数量可以添加和删除tabs.For那我使用c:为代表的丰富列表的foreach:tab.The选项卡包含的富豪榜:面板包含details.The面板只包含简单content.By点击阅读更多的链接,用户可以阅读完整content.For我需要重新描绘的A4J:outputpanel其中包含的丰富的名单:panel.But我不能这样做this.Because我已经使用C:freach用于渲染tabs.So列表我不能得到A4J的确切ID :outputpanel其中含有丰富的名单:panels.The A4J:outputpanel不列入允许的EL expressions.My代码段下面,重新呈现丰富:标签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循环中呈现的tabe面板的ID,因此必须重新渲染panelGrid detailGrid。小心缓存在托管bean的选项卡中显示的所有值。如果这样做不需要调用数据库和所有选项卡的重新渲染速度快。