java复合组件递归传递支持bean
我试着用复合组件创建一个递归菜单,但我不知道如何将backingbean传递到同一个复合组件中。mi代码如下所示
<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>
method Acquisite子菜单仅返回对象列表。该方法如下所示
public List<myObject> obtainsubmenu(Long id){
return mymap.get(id); //where my maps is parametized this way Map<Long, List<MyObject>
}
对于我菜单的第一级,它看起来工作得很好。问题是,当它试图调用自己来执行递归时,它没有像应该的那样传递对象引用,并且我得到了一个stackoverflow异常原因,因为映射为null
有没有办法做到这一点
坦克求救
# 1 楼答案
首先,不应该使用JSTL标记,而应该使用JSF标记
空支票也应该是不必要的
但是,如果您正在创建Primefaces菜单,此方法将不起作用。您必须在
MenuModel
中构建编程菜单更一般地说,如果菜单根组件负责呈现其子组件本身(
menuComponent.getRendersChildren()
返回true
),这种方法将不起作用