如何添加<p:submenu />
的链接以用于<p:megaMenu>
?
例如:
<!DOCTYPE html>
<ui:composition xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
template="/pages/template/homeTemplate.xhtml">
<ui:define name="content">
<p:megaMenu>
<p:submenu label="Home" url="/" />
<p:submenu label="Category" url="/cats">
<p:column>
<p:submenu label="Category 1" url="/cats/cat1">
<p:menuitem value="Item 1" url="/cats/cat1/item1"/>
<p:menuitem value="Item 2" url="/cats/cat1/item2"/>
<p:menuitem value="Item 3" url="/cats/cat1/item3"/>
</p:submenu>
</p:column>
</p:submenu>
</p:megaMenu>
</ui:define>
</ui:composition>
<p:submenu />
没有url
属性,因此会被忽略,我该怎么办呢?
答案 0 :(得分:4)
我遇到了这个问题,我发现有很多人说这是不可能的,因为primefaces不支持它,但是如果你不介意使用一些javascript就有一个解决方法:
<ui:composition xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
template="/pages/template/homeTemplate.xhtml">
<ui:define name="content">
<p:megaMenu id="megaMenu">
<p:submenu label="Home" url="/" styleClass="homeLink" />
<p:submenu label="Category" url="/cats" styleClass="catLink">
<p:column>
<p:submenu label="Category 1" styleClass="cat1Link">
<p:menuitem value="Item 1" url="/cats/cat1/item1"/>
<p:menuitem value="Item 2" url="/cats/cat1/item2"/>
<p:menuitem value="Item 3" url="/cats/cat1/item3"/>
</p:submenu>
</p:column>
</p:submenu>
</p:megaMenu>
<script type="text/javascript">
$(function(){
$(".homeLink a:first").attr('href', "#{request.contextPath}/");
$(".catLink a:first").attr('href', "#{request.contextPath}/cats");
$(".cat1Link").click(function(){
window.location.href="#{request.contextPath}/cats/cat1";
}).css('cursor','pointer');
});
</script>
</ui:define>
</ui:composition>
我在这里做的是:
1)我使用独占<p:submenu>
styleClass
2)如果<p:submenu>
位于第一行,我在DOM准备就绪后将<a>
的{{1}}属性更改为我的链接:
href
3)如果$(function(){
$(".homeLink a:first").attr('href', "#{request.contextPath}/");
$(".catLink a:first").attr('href', "#{request.contextPath}/cats");
});
是菜单的一部分,我创建了一个<p:submenu>
属性并将光标自定义为指针,因为那里没有onclick
标记。
<a>
这导致了我需要的菜单,当然,如果禁用了javascript,它将无效,但现在菜单将适用于支持JavaScript的浏览器。