JSF включает проблемное меню, связанное - PullRequest
1 голос
/ 11 февраля 2011

Я пытаюсь реализовать меню в 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: view, но, похоже, ничего не работает. Я знаю, что где-то делаю это неправильно, не могу проверить. Любая помощь будет оценена.

Кроме того, первая часть кода, когда он выполняется как один файл, работает очень хорошо, единственная проблема - когда я включаю его в другой JSP, меню не отображаются.

1 Ответ

1 голос
/ 11 февраля 2011

<f:subview> должен идти во включаемом файле, а не в родительском файле. Замените файл <f:view> в menucontents.jsp на <f:subview> и удалите <f:subview> из menu.jsp.

Обобщенная:

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 вокруг него, что приведет только к неверному HTML)

...