JSF中的动态菜单

时间:2014-08-28 17:47:47

标签: jsf dynamic menu

我正在尝试使用JSF2 / RichFaces实现动态菜单。这个想法很简单,菜单在数据库中定义,并且取决于连接的用户。

菜单已正确生成,但操作无效,我不明白为什么。 这是我的JSF代码:

<c:forEach items="${sessionMenu.menus}" var="menu"><!-- Menus -->
    <li>
        <a href="#" id="${menu.label}">${menu.label}</a>
        <ul class="sub-menu" id="sub-${menu.label}">
            <c:forEach items="${menu.submenus}" var="submenu"><!-- Sub menus -->
                <li>
                    <a4j:commandLink value="${submenu.label}" action="${sessionMenu.action}"/>
                </li>
            </c:forEach>
        </ul>
    </li>
</c:forEach>

${sessionMenu.action}返回一个字符串,该字符串应该重定向到另一个页面(在faces-config文件中定义为navigation-case)。 我也尝试用硬编码的字符串替换动作,并且它可以工作,我猜这个问题是由于EL没有正确解释而来的。

如果有人可以帮助我理解什么是错的?

修改: 以下是生成链接的示例:

<a id="mainForm:j_id_g_0_2_0_2" onclick="RichFaces.ajax("mainForm:j_id_g_0_2_0_2",event,{"incId":"1"} );return false;" name="mainForm:j_id_g_0_2_0_2" href="#">Screen</a>

这是动态生成的,它什么都不做;

<a id="mainForm:j_id_g_0_2_0_4" onclick="RichFaces.ajax("mainForm:j_id_g_0_2_0_4",event,{"incId":"1"} );return false;" name="mainForm:j_id_g_0_2_0_4" href="#">Screen</a>

这个使用了静态字符串,重定向工作正常。

这两个链接是在同一页面和同一请求中生成的。

1 个答案:

答案 0 :(得分:0)

最后,我让它工作了,我只是将操作值更改为方法名称,因为它在我的bean中定义,这意味着:

<a4j:commandLink value="#{submenu.label}" action="#{sessionMenu.getAction()}" />

如果有人可以解释原因,我很好奇。