2

テンプレートを使用していますが、メインのテンプレートには

<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:commandLinkh:commandLink

ありがとう!

4

2 に答える 2

0

ブラウザに JS エラーがないか確認していただけますか? この問題を再現しようとしているときに、Firebug で「TypeError: b is undefined」というメッセージが表示されます。Primefaces 5.x バージョンに関連しているようです。バージョン 4.0 にロールバックすると、正常に動作します。

于 2015-01-21T07:28:50.277 に答える