我有这样的模板: 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">
重定向内容有问题
我该如何解决这个问题? 也许这是我的布局有问题? 或者如何正确地从内容重定向到另一个内容,使用内容中的按钮?
答案 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" />