2

私は ` でプライムフェイス 3.1 を使用しており、4 つの位置があります。西の位置 (西) では、ツリー メニューを追加しました。JSFコードは次のとおりです

<p:layoutUnit position="west" size="200" header="Left"
            resizable="true" collapsible="true">
            <h:form>
                <p:tree dynamic="true" value="#{treeBean.root}" var="node" id="tree"
                    selectionMode="single">
                    <p:treeNode id="treeNode">
                        <h:outputText value="#{node}" id="lblNode" />
                    </p:treeNode>
                </p:tree>
            </h:form>
        </p:layoutUnit>

そして私が持っているTreeBeanで

root = new DefaultTreeNode("Root", null);  
        TreeNode node0 = new DefaultTreeNode("Color", root);  


        TreeNode node00 = new DefaultTreeNode("Red", node0);  
        TreeNode node01 = new DefaultTreeNode("Blue", node0);
        TreeNode node02 = new DefaultTreeNode("Green", node0);

これらのノードの 1 つを展開してクリックするとナビゲーションが可能になり、それぞれのノードをクリックすると、どのように jsf ページをレイアウトの中央位置に表示できますか。つまり、ノード Blue をクリックすると、理想的には別の jsf ページがレイアウトの中央にロードされるようにしたいと考えています。

どんな助けも非常に高く評価されます。

ありがとう

更新 1

次のコードを追加すると、start.xhtml へのナビゲーションが実行されます。ただし、start.xhtml は私のレイアウト内ではなく表示され、start.xhtml は新しいページとして表示されます。

public void onNodeSelect(NodeSelectEvent event) {

        try {
            System.out.println(" here " + event.getTreeNode().getData());
            FacesContext
                    .getCurrentInstance()
                    .getApplication()
                    .getNavigationHandler()
                    .handleNavigation(FacesContext.getCurrentInstance(),
                            "null", "/start.xhtml?faces-redirect=true");
        } catch (Exception e) {
            logger.info("error "+e.getMessage());
            // TODO: handle exception
        } 
4

2 に答える 2

2

これは、レイアウトの助けを借りて達成されます。アプリケーションのレイアウト テンプレートを定義します。サンプルはここに示されています...

myLayoutTemplate.xhtml

       <p:layout>
        <p:layoutUnit position="east" header="Menu"  collapsed="true" scrollable="true" collapsible="true" >
            <ui:insert name="appMenu">
                Place Your menu here ...
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit position="center" scrollable="true">
            <ui:insert name="pageContent">
                Page Content is loaded here .....
            </ui:insert>
        </p:layoutUnit>
    </p:layout>

メニュー項目をクリックすると読み込まれる Your Page.xhtml では、.....

<ui:composition template="myLayoutTemplate.xhtml">
    <ui:define name="pageContent">

    </ui:define>
</ui:composition>
于 2012-05-04T09:05:27.770 に答える
1

この投稿はあなたにとって非常に役立つと思います 別のJSF内に1つのxhtmlを含める

テンプレートを作成し、それを で使用する方法について説明しますtemplate client。@rags はすでにそれを言っていますが、実際に使用する必要はありません<p:layout>。上にリンクされている記事は、より正確です。そこで必要なものが見つかると思います。よろしく

于 2012-05-07T21:10:13.843 に答える