【问题标题】:composite component recursive passing backing bean复合组件递归传递backing bean
【发布时间】:2014-02-02 05:46:28
【问题描述】:

我每个人都在尝试使用复合组件制作递归菜单,但我不知道如何将 backingbean 传递给同一个复合组件,我的代码看起来像这样

<composite:interface>
     <composite:attribute name="bean" required="true"/>
     <composite:attribute name="node" required="true"/>
</composite:interface>

<cc:implementation>
     <--some code here-->

     <c:if test="#{not empty cc.attrs.bean.obtainsubmenu(cc.attrs.node)}">
          <c:foreach items="cc.attrs.bean.obtainsubmenu(cc.attrs.node)" var="submenu">
               <!--some other code here-->
               <menu:recursivemenu
                   bean="#{cc.attrs.bean}"
                   node="#{submenu.idOpc}"
               />
          </c:foreach>    
     </c:if>
</cc:implementation>

获取子菜单方法只返回一个对象列表,该方法看起来像这样

public List<myObject> obtainsubmenu(Long id){
 return mymap.get(id); //where my maps is parametized  this way Map<Long, List<MyObject>
}

对于我的菜单的第一级,它看起来工作得很好,问题是当它试图调用自己进行递归时,它没有按应有的方式传递对象引用,我得到了一个 stackoverflow 异常原因,因为地图为空

有没有办法做到这一点?

坦克寻求帮助!

【问题讨论】:

    标签: java jsf-2 recursion components composite


    【解决方案1】:

    首先,你不应该使用 JSTL 标签,而应该使用 JSF 标签。

    也不需要空检查

    <composite:interface>
         <composite:attribute name="bean" required="true"/>
         <composite:attribute name="node" required="true"/>
    </composite:interface>
    
    <cc:implementation>
         <--some code here-->
    
        <ui:repeat value="#{cc.attrs.bean.obtainsubmenu(cc.attrs.node)}" var="submenu">
            <!--some other code here-->
            <menu:recursivemenu bean="#{cc.attrs.bean}" node="#{submenu.idOpc}"/>
        </ui:repeat>    
    </cc:implementation>
    

    但是,如果您正在创建 Primefaces 菜单,则此方法将不起作用。您必须在 MenuModel

    中构建程序化菜单

    更一般地说,如果您的菜单根组件自己负责渲染其子组件(menuComponent.getRendersChildren() 返回true),这种方法将不起作用。

    【讨论】:

      猜你喜欢
      • 2011-10-21
      • 2014-02-09
      • 2011-02-02
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 2015-07-22
      • 2011-07-20
      • 1970-01-01
      相关资源
      最近更新 更多