2

我正在使用带有 ` 的 primefaces 3.1,有四个位置。在西位置(西),我添加了树形菜单。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);

当我展开并单击其中一个节点时是否可以进行导航,并且在单击各个节点时,我如何在布局的中心位置显示 jsf 页面。即,如果我单击节点蓝色,理想情况下我希望将另一个 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

这是在布局的帮助下实现的。为您的应用程序定义布局模板。示例显示在这里...

我的布局模板.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>

在单击菜单项时要加载的 Page.xhtml 中,.....

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

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

我认为这篇文章对您非常有用在另一个 JSF 中包含一个 xhtml

它描述了如何创建模板,然后在template client. @rags 已经告诉过您,但您实际上不必使用<p:layout>. 上面链接的文章更精确。我相信你会在那里找到你需要的东西。问候

于 2012-05-07T21:10:13.843 回答