2011-02-10 48 views
1

我想在JSF中實現菜單,我能夠做到這一點。JSF包含問題菜單相關

menucontents.jsp:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %> 
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 
<html> 
<head> 
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8" /> 
    <title>MyFaces - the free JSF Implementation</title> 
    <link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/pages/css/basic.css" /> 
</head> 
<body> 
<f:view> 
    <f:loadBundle basename="com.cpc.resources.menu" var="menu"/> 
    <t:div id="hNav_outer"> 
     <t:panelNavigation2 id="nav1" layout="list" itemClass="off" activeItemClass="on" openItemClass="on" 
          renderAll="true"> 
      <t:commandNavigation2 value="#{menu['menu_Home']}" style="padding-left: 0px;"> 
       <t:commandNavigation2> 
        <f:verbatim>&#8250; </f:verbatim> 
        <t:outputText value="#{menu['menu_Home']}"/> 
       </t:commandNavigation2> 
      </t:commandNavigation2> 
      <t:commandNavigation2 value="#{menu['menu_admin']}" style="padding-left: 150px;"> 
       <t:commandNavigation2> 
        <f:verbatim>&#8250; </f:verbatim> 
        <t:outputText value="#{menu['menu_admin_change_password']}"/> 
       </t:commandNavigation2> 
       <t:commandNavigation2> 
        <f:verbatim>&#8250; </f:verbatim> 
        <t:outputText value="#{menu['menu_admin_forgot_password']}"/> 
       </t:commandNavigation2> 
      </t:commandNavigation2> 

     </t:panelNavigation2> 
    </t:div> 
</f:view> 
</body> 
</html> 

引入了menu.jsp:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %> 
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 
<html> 
<head> 
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8" /> 
    <title>MyFaces - the free JSF Implementation</title> 
    <link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/pages/css/basic.css" /> 
</head> 
<body> 
<f:view> 

<f:subview id="headerinclude1"> 
    <jsp:include page="menucontents.jsp" /> 
</f:subview> 
</f:view> 
</body> 
</html> 

我曾嘗試通過刪除HTML/BODY/F,即不同的組合:視圖標籤,但似乎沒有被我的工作知道某個地方我做錯了,無法檢查它。任何幫助,將不勝感激。

此外,代碼的第一部分作爲單個文件執行時非常有效,唯一的問題是將其包含在另一個JSP中時菜單未顯示。

回答

1

<f:subview>必須在包含文件中,而不是在父文件中。將menucontents.jsp文件中的<f:view>替換爲<f:subview>,並從menu.jsp中刪除<f:subview>

總結:

menu.jsp

<f:view> 
    <jsp:include page="menucontents.jsp" /> 
</f:view> 

menucontents.jsp

<f:subview id="menucontents"> 
    <f:loadBundle basename="com.cpc.resources.menu" var="menu"/> 
    ... 
</f:subview> 

(注意,包括文件應該<f:view>,你也不需要一個HTML頭/身體周圍,那隻會產生invalid H TML)

+0

非常感謝@BalusC真的很感謝你的回答我嘗試了你提到的東西,現在當我調用menu.jsp時,我得到以下「>」>作爲瀏覽器的輸出 – 2011-02-10 22:02:35