0

我有这样的模板: http ://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example/

我添加菜单导航:

<h:form id="form">
    <div id="page">

        <div id="header">
            <ui:insert name="header" >
                <ui:include src="/pages/template/header.xhtml" />
            </ui:insert>
            <f:ajax render="ContentLoader">
                  <h:commandLink actionListener="#{contentPage.setPage('/pages/first.xhtml')}" value="About Us" />
                  <h:commandLink actionListener="#{contentPage.setPage('/pages/login.xhtml')}" value="Contact Us" />
               </f:ajax>
        </div>
        <h:panelGroup id="ContentLoader" >
        <div id="content">
            <ui:insert name="content" >
                <ui:include src="#{contentPage.page}" />
            </ui:insert>
        </div>
        </h:panelGroup>
    </div>
    </h:form>

<h:commandButton action="link">链接工作正常,但我使用内容中的内容重定向内容有问题

我该如何解决这个问题?也许我的布局有问题?或者如何使用内容中的按钮正确地从内容重定向到另一个内容?

4

1 回答 1

0

至于您的具体问题,它可能是由组合<ui:include src="#{...}"> 和视图范围的 bean 引起的。仅当您至少升级到 Mojarra 2.1.18 时,此构造才有效。否则,视图范围的 bean 将无法恢复并重新创建,因此#{contentPage.page}当要解码页面内的任何表单操作时,将考虑默认值。至少升级到 Mojarra 2.1.18 应该可以解决您的问题。您可以在http://javaserverfaces.java.net获得它。目前已经是 2.1.25。

至于您的具体功能要求,使用命令链接/按钮进行简单的页面到页面导航是一种不好的做法。您应该为此使用输出链接/按钮。

<h:button value="navigate" outcome="link" />

或者

<h:link value="navigate" outcome="link" />
于 2013-08-30T00:26:36.390 回答