JSF中的动态菜单
我试图用JSF2/RichFaces实现一个动态菜单。这个想法很简单,菜单在数据库中定义,并且取决于连接的用户 菜单生成正确,但操作不起作用,我不明白为什么。 这是我的JSF代码:JSF中的动态菜单,jsf,dynamic,menu,Jsf,Dynamic,Menu,我试图用JSF2/RichFaces实现一个动态菜单。这个想法很简单,菜单在数据库中定义,并且取决于连接的用户 菜单生成正确,但操作不起作用,我不明白为什么。 这是我的JSF代码: <c:forEach items="${sessionMenu.menus}" var="menu"><!-- Menus --> <li> <a href="#" id="${menu.label}">${menu.label}</a&g
<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>
这个是动态生成的,它什么也不做
<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>
这个使用了静态字符串,重定向工作正常
这两个链接是在同一个页面和同一个请求中生成的。最后,我让它工作了,我只是将操作值更改为在我的bean中定义的方法名称,这意味着:
<a4j:commandLink value="#{submenu.label}" action="#{sessionMenu.getAction()}" />
如果有人能解释原因,我很好奇。你看过开发者控制台中
a4j:commandLink
的输出了吗?是的,但我看不出动态或硬编码字符串之间有什么区别:(你能给出生成链接的示例吗?1)这都是一种形式,对吗?2) #{sessionMenu.menus}
在回发期间保证完全相同?3) 为什么要使用带有导航案例的ajax命令链接,而不是用于普通页面到页面导航的普通GET链接?(UX/SEO杀手)4)为什么${}
而不是{}
?(它们在facelet中的行为完全相同,用JSP-EL风格编写JSF-EL没有意义)@BalusC:1)是的。2) sessionMenu
是会话范围,在会话期间不会重建。3) 因为当用户错误地离开页面(检查/更新数据)4)时,我们有一些操作要做;)
<a4j:commandLink value="#{submenu.label}" action="#{sessionMenu.getAction()}" />