【问题标题】:how to generate dynamic rich:panelMenu?如何生成动态丰富:panelMenu?
【发布时间】:2011-04-16 21:20:48
【问题描述】:

我在生成动态菜单时遇到问题,我使用的是 JSF1.2。正如BalusC在相关论坛中建议的那样,我尝试使用带有arrayList的c:forEach来生成动态rich:panelMenu,但从未在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>

这段代码有什么问题?谁能启发我?有关信息,serviceListBean 是请求范围的 bean。

【问题讨论】:

    标签: jsf


    【解决方案1】:

    两种可能的原因:

    1. JSTL 未在 JSP 或 Facelets 中声明为 taglib。要确认这一点,请在浏览器中右键单击页面并选择查看源代码。您是否在生成的 HTML 中看到未解析的 &lt;c:forEach&gt; 标记?如果您使用的是 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 重复组件中,例如 &lt;h:dataTable&gt;var="serviceListBean"。这也行不通。您还需要将 JSF 重复组件替换为 &lt;c:forEach&gt;

    【讨论】:

    • gr8 BalusC,用你的第一个解决方案解决了。我使用了错误的 taglib uri 作为 java.sun.com/jstl/core" %>,现在改为 java.sun.com/jsp/jstl/core" %>,得到了工作。在此stackoverflow.com/questions/2394394/… 中也有人引用,他使用了java.sun.com/jstl/core,他得到了解决。这向我保证,没有 uri 问题。因此,如果 BalusC 发表意见,我从没想过要改变。为什么这个 taglib uri 混乱?记录在哪里?
    猜你喜欢
    • 2011-01-24
    • 2013-03-27
    • 2013-02-11
    • 2023-03-05
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2014-01-26
    • 2012-01-22
    相关资源
    最近更新 更多