re render rich:标签内容

时间:2011-01-25 02:31:30

标签: jsp jsf richfaces jsf-2

我已经尝试为我的应用程序提供web2.0支持。为此我想提供rich:tabpanel,它可以动态包含多个选项卡。用户可以添加和删除选项卡。为此我使用c:foreach for表示rich:tab的列表。该选项卡包含rich列表:panel包含详细信息。面板仅包含简短内容。通过单击读取更多链接,用户可以阅读完整内容。为此我需要重新呈现a4j :outputpanel,其中包含rich:panel的列表。但是我不能这样做。因为我已经使用c:freach来渲染tab的列表。因此我无法获得a4j的精确id:包含列表的outputpanel rich:panels.The4j: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 个答案:

答案 0 :(得分:1)

由于无法确定forEach循环中呈现的tabe面板的id,因此必须重新渲染panelGrid detailGrid 。请注意缓存托管bean中选项卡上显示的所有值。如果这样做,则不需要数据库调用,并且所有选项卡的重新渲染都很快。