【问题标题】:Dynamically generate rich menuitems inside rich context menu在丰富的上下文菜单中动态生成丰富的菜单项
【发布时间】:2013-03-27 10:41:03
【问题描述】:

我正在尝试在丰富的上下文菜单组件中动态生成丰富的菜单项。这是我的代码:

<ui:repeat var="group" value="#{myBean.groups}" >
  <div align="center"> 
    <rich:panel>
      <h:graphicImage value="#{group.iconUrl}"/>
      <rich:contextMenu attached="true">
        <c:forEach var="child" items="#{group.children}">
          <rich:menuItem label="#{child.name}" />
        </c:forEach>
      </rich:contextMenu>
    </rich:panel>   
  </div>
</ui:repeat>

我正在使用这个标签库:

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

我的问题是没有生成菜单项。我也尝试用 ui:repeat 替换 c:forEach 但它仍然无法正常工作。


我尝试了一些实验来消除一些因素。我删除了丰富的上下文菜单并使用了 ui:repeat

<ui:repeat var="group" value="#{myBean.groups}" >
  <div align="center"> 
    <rich:panel>
      <h:graphicImage value="#{group.iconUrl}"/>
      <ui:repeat var="child" value="#{group.children}">
         <h:outputText value="#{child.name}" />
      </ui:repeat>
    </rich:panel>   
  </div>
</ui:repeat>

上面的这段代码sn-p 工作。我猜是上下文菜单的渲染和ui重复有冲突。

遗憾的是,我确实需要将 group.children 放在丰富的上下文菜单组件中。你能建议任何方法来帮助我实现我想要的吗?


注意:我使用的是 servlet 3.0 版

【问题讨论】:

    标签: jsf-2 foreach richfaces jstl uirepeat


    【解决方案1】:

    &lt;c:forEach&gt; 在视图构建期间运行,此时 XHTML 文件将被转换为 JSF 组件树。 &lt;ui:repeat&gt; 在视图渲染期间运行,此时 JSF 组件树即将生成 HTML。

    因此,在您的特定示例中,在 &lt;c:forEach&gt; 运行的那一刻,#{group} 定义的变量 &lt;ui:repeat&gt; 在 EL 范围内无处可用,&lt;c:forEach&gt; 基本上检索 null 作为项目值因此没有什么可迭代的。

    只有将外部 &lt;ui:repeat&gt; 也替换为 &lt;c:forEach&gt; 时,您的构造才会起作用。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2013-09-07
      • 1970-01-01
      • 2017-03-21
      相关资源
      最近更新 更多