Вопрос по jsf-2, java, primefaces – Макет страницы Primefaces с древовидным меню в качестве навигации

2

Я использую Primefaces 3.1 с `, имея четыре позиции. В западной позиции (запад) я добавил дерево меню. Код JSF следующий

<code><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>
</code>

и в TreeBean у меня есть

<code>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);
</code>

Возможно ли иметь навигацию, когда я раскрываю и щелкаю по одному из этих узлов и, щелкая по соответствующим узлам, как я могу отображать страницы jsf в центральной позиции макета. то есть, если я щелкаю узел Blue, в идеале я хотел бы, чтобы другая страница jsf была загружена в центральную позицию макета.

Любая помощь очень заметна.

Спасибо

Обновление 1

Я добавил следующий код, и он выполняет навигацию в start.xhtml. Однако start.xhtml отображается не внутри моего макета, start.xhtml отображается как новая страница.

<code>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
        } 
</code>

Ваш Ответ

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>

In Your Page.xhtml which is to be loaded on click of your menu item, .....

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

    </ui:define>
</ui:composition>
Спасибо за помощь, я попробую это. Jåcob
Есть ли другие способы достижения этого? Jåcob
1

Включить один HTML в другой JSF

Он описывает, как вы создаете шаблон, а затем используете его в своемtemplate client, @rags уже говорил вам об этом, но вам действительно не нужно использовать<p:layout>, Статья, приведенная выше, является более точной. Я верю, что вы найдете там то, что вам нужно. С уважением

Похожие вопросы