如何生成动态丰富:panelMenu?

时间:2011-04-16 21:20:48

标签: jsf

我有一个生成动态菜单的问题,我正在使用JSF1.2。我尝试使用arrayList生成c:forEach以生成动态rich:panelMenu,因为BalusC在相关论坛中建议,但是在c:forEach中永远不会触发Accessor。它毁了我一天。任何人都可以为我提供解决方案吗?

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

这段代码有什么问题?任何人都可以开导我吗?对于info,serviceListBean是请求范围的bean。

1 个答案:

答案 0 :(得分:0)

两个可能的原因:

  1. JSTL未在JSP或Facelets中声明为taglib。要确认这一点,请在浏览器中右键单击页面,然后选择查看源。您是否在生成的HTML中看到<c:forEach>标记未分析?如果您正在使用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重复组件。