jsf标题导航菜单 - 模板

时间:2013-08-29 18:59:04

标签: templates jsf jsf-2

我有这样的模板: 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">重定向内容有问题

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

1 个答案:

答案 0 :(得分:0)

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

对于您的具体功能要求,使用命令链接/按钮进行普通页面到页面导航是poor practice。你应该使用输出链接/按钮。

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

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