javax.faces.FacesException:无法解析 NavigationCase 的结果

Posted

技术标签:

【中文标题】javax.faces.FacesException:无法解析 NavigationCase 的结果【英文标题】:javax.faces.FacesException: Could not resolve NavigationCase for outcome 【发布时间】:2016-07-12 01:22:09 【问题描述】:

我在 /template/template.xhtml 有一个 template.xhtml 文件

<h:head>

</h:head>

<h:body>
    <p:layout fullPage="true">
        <p:layoutUnit position="north" size="100">
            <h:outputText value="header"></h:outputText>
        </p:layoutUnit>
        <p:layoutUnit position="center">
            <p:layout>
                <p:layoutUnit position="north">
                    <h:outputText value="tabs"/>
                    <ui:include src="/tabs/tabs.xhtml"/>
                </p:layoutUnit>
                <p:layoutUnit position="west">
                    <h:outputText value="left menu"></h:outputText>
                </p:layoutUnit>
                <p:layoutUnit position="center">
                    <h:outputText value="main-content"></h:outputText>
                </p:layoutUnit>
            </p:layout>
        </p:layoutUnit>
        <p:layoutUnit position="south" size="100">
            <h:outputText value="footer"></h:outputText>
        </p:layoutUnit>
    </p:layout>
</h:body>
</html>

我在 /tabs/tabs.xhtml 有 tabs.xhtml 文件

 <h:head>

</h:head>


<p:tabMenu activeIndex="#param.i">
    <p:menuitem value="Overview" outcome="index">
        <f:param name="i" value="0" />
    </p:menuitem>
    <p:menuitem value="Demos" outcome="index">
        <f:param name="i" value="1" />
    </p:menuitem>
    <p:menuitem value="Documentation" outcome="index">
        <f:param name="i" value="2" />
    </p:menuitem>
    <p:menuitem value="Support" outcome="index">
        <f:param name="i" value="3" />
    </p:menuitem>
    <p:menuitem value="Social" outcome="index">
        <f:param name="i" value="4" />
    </p:menuitem>
</p:tabMenu>

由于 template.xhtml 中的 ui include 标记,我收到以下异常。是不是ui include的src属性不对啊:

javax.faces.FacesException: Could not resolve NavigationCase for outcome: index
at org.primefaces.renderkit.OutcomeTargetRenderer.getTargetURL(OutcomeTargetRenderer.java:86)
at org.primefaces.component.menu.BaseMenuRenderer.encodeMenuItem(BaseMenuRenderer.java:162)
at org.primefaces.component.tabmenu.TabMenuRenderer.encodeItem(TabMenuRenderer.java:89)
at org.primefaces.component.tabmenu.TabMenuRenderer.encodeMarkup(TabMenuRenderer.java:65)
at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:108)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:85)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:68)
at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:85)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:68)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:83)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:68)
at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1651)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1651)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1651)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:395)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

【问题讨论】:

请也显示目录结构。 ui:include 中的 src 是正确的。结果=“索引”是此处定义的某些标签的一些默认属性。 【参考方案1】:

ui:include 标记按预期工作。问题出在 tabx.xhtml 内部。对于菜单项,您拥有outcome="index",而我的钱在 index.xhtml 上,与 tab.xhtml 不在同一个文件夹中。要么确保结果是像 ../index 这样的相对链接,要么像 /index 这样绝对链接。

如需进一步帮助,您应该发布您的目录结构。

【讨论】:

我试过了,结果="/index" 对我不起作用。你试过了吗?

以上是关于javax.faces.FacesException:无法解析 NavigationCase 的结果的主要内容,如果未能解决你的问题,请参考以下文章