我正在使用模板,在我的主模板中我有一个
<ui:include src="#{navBean.content}.xhtml">
我的问题是任何 bean 的 action 方法,都没有在上一页运行过。这是一个示例,当您单击第一页上的菜单时,会进行 ajax 调用,执行操作方法并加载页面内容。通过单击加载页面(page1)上的链接,不执行操作方法。
配置:jsf 2.2.9 | 素面5.1 | Tomcat 8.0.3
模板.xhtml
<div>
<div>
<h:form>
<p:slideMenu>
<p:submenu label="Cat 1">
<p:menuitem value="page1" action="#{navBean.changeMenuContent('page1')}" update=":change"/>
<p:menuitem value="bla"/>
</p:submenu>
</p:slideMenu>
</h:form>
</div>
<div>
<h:form id="change">
<ui:include src="/#{navBean.content}.xhtml"/>
</h:form>
</div>
</div>
导航豆:
@ManagedBean(name = "navBean")
@RequestScoped
public class NavigationBean
{
private String content = "index";
public void changeMenuContent(String content)
{
setContent(content);
}
//get set...
}
page1.xhtml
<p:commandLink value="teste" action="#{navBean.changeMenuContent('page2')}" ajax="false"/>
page2 只有一个<p: outputLabel />
,用于测试。
我试过p:commandLink
和h:commandLink
谢谢!