テンプレートを使用していますが、メインのテンプレートには
<ui:include src="#{navBean.content}.xhtml">
私の問題は、任意の Bean のアクション メソッドが呼び出されず、前のページで実行されたことです。最初のページのメニューをクリックすると、ajax 呼び出しが行われ、アクション メソッドが実行され、ページ コンテンツが読み込まれる例を次に示します。読み込まれたページ (page1) のリンクをクリックしても、アクション メソッドは実行されません。
構成: jsf 2.2.9 | プライムフェイス5.1 | トムキャット 8.0.3
template.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>
navBean:
@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 />
、テスト用の が 1 つだけあります。
私は試してみましp:commandLink
たh:commandLink
ありがとう!