4
- 我在navigation.vm文件中定義了一個在liferay項目中運行良好的菜單。
- 但我想從我的portlet訪問此菜單。
- 有什麼辦法從portlet入口點或view.jsp訪問菜單嗎?
這個link描述了直接在jsp中獲取菜單項的方法。
下面的代碼是直接從一些改進格式上面的鏈接複製:
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.liferay.portal.model.Layout"%>
<%@ page import="com.liferay.portal.kernel.util.WebKeys"%>
<%@ page import="com.liferay.portal.theme.NavItem" %>
<%@ page import="com.liferay.portal.theme.RequestVars" %>
<%@ page import="com.liferay.portal.theme.ThemeDisplay"%>
<portlet:defineObjects />
<liferay-theme:defineObjects />
<div style="width:100%">
<%
//ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
String title = themeDisplay.getLayout().getName(themeDisplay.getLocale());
List<NavItem> navItems = new ArrayList<NavItem>();
if (layout != null) {
RequestVars requestVars = new RequestVars(request, themeDisplay, layout.getAncestorPlid(), layout.getAncestorLayoutId());
navItems = NavItem.fromLayouts(requestVars, layouts);
}
for (NavItem navItem : navItems) {
if (navItem.getName().equalsIgnoreCase(title)) {
if (navItem.hasChildren()) {
for(NavItem navChild : navItem.getChildren()) {
%>
<div style="float:left;" class="newsMenuPortlet">
<a href="<%= navChild.getURL() %>" <%=navChild.getTarget() %>>
<%= navChild.getName() %>
</a>
</div>
<%
} // inner for-loop ends here
}
}
}// outer for-loop ends here
%>
</div>
進口liferay-ui
的taglib:
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
那麼你可以使用
<liferay-ui:navigation displayStyle="from-level-0" >
</liferay-ui:navigation>
注:設置displayStyle="from-level-0"
給你正常的行爲就像navigation.vm
,你可以用屬性不同的發揮得到其他行爲。
感謝它也可以 – 2013-02-20 08:44:43
我得到了所有菜單和子菜單,但我怎麼弄圖標。像:navClind.icon(); – 2013-02-20 10:12:56