2011-04-16 55 views
0

我有一個問題來生成動態菜單,我使用JSF1.2。我嘗試了c:forEach和arrayList來生成動態的rich:panelMenu,因爲BalusC在相關的論壇中建議,但是Accessor從未在c:forEach中觸發過。它毀了我一天。任何人都可以爲我提供解決方案如何生成動態豐富的:panelMenu?

<c:forEach items="#{serviceListBean.services}" var="child"> 
       <rich:panelMenuItem mode="none">     
        <h:outputText value="#{child.serviceId}"></h:outputText>           
       </rich:panelMenuItem> 
      </c:forEach> 

這段代碼有什麼問題?任何人都可以啓發我嗎?有關信息,serviceListBean是請求範圍的bean。

回答

0

兩個可能的原因:

  1. JSTL未聲明爲在JSP或Facelets的標記庫。要確認此操作,請在瀏覽器中單擊右鍵並選擇查看源代碼。您是否看到<c:forEach>標記在生成的HTML中未解析?如果您使用JSP,聲明如下:

    <%@taglib prefic="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    

    或者,如果你使用的Facelets,如根元素如下聲明它:

    xmlns:c="http://java.sun.com/jsp/jstl/core" 
    

    在如Tomcat一些服務器,這些服務器沒有按不隨JSTL出貨,您還需要先安裝JSTL,另請參閱this info page

  2. 這段代碼又被放置在一個JSF重複組件內,如<h:dataTable>var="serviceListBean"。這也不起作用。您還需要用<c:forEach>替換JSF重複組件。

+0

gr8 BalusC,用您的第一個解決方案解決。我使用錯誤的taglib uri作爲<%@ taglib prefix =「c」uri =「http://java.sun.com/jstl/core」%>,現在更改爲<%@ taglib prefix =「c」uri =「 http://java.sun.com/jsp/jstl/core「%>,得到了工作。也有人在這個http://stackoverflow.com/questions/2394394/using-java-to-create-a-dynamic-richpanelmenu中引用,他使用http://java.sun.com/jstl/core,他得到了解決。這向我保證,沒有問題。所以我從來沒有想過要改變,如果BalusC評論。爲什麼這個taglib uri混亂?記錄在哪裏? – gkp 2011-04-17 05:51:00

+0

它是1.0 uri。另見http://stackoverflow.com/tags/jstl/info – BalusC 2011-04-17 12:07:52