在相同的现有页面上加载新的xhtml页面,而不会丢失其他html组件

时间:2018-06-26 17:41:37

标签: ajax jsf primefaces portal

enter image description here

我有这种情况: -Eclipse火星 -Primefaces 6.2 -JSF 2.1 -ibm门户框架 -在websphere上运行

当我单击primefaces菜单项以打开新的xhtml时,我需要在同一网页上打开此新的xhtml,而又不丢失组件中存在的所有其他html。我只需要刷新即可。

这是我的项目:

我的主页(xhtml):

<h:body>
        <div id="divMain" style="height:200px">
            <ui:insert name="cabecalho">
                <ui:include src="/_MF/jsf/MainMenu.xhtml"></ui:include>
            </ui:insert>

            <ui:insert name="conteudo">


            </ui:insert>        
        </div>       
    </h:body>

MainMenu.xhtml:

<h:form id="myFormMainMenu">
            <div id="mainMenu">

                <p:megaMenu orientation="#{megaMenuView.orientation}" style="margin-top:20px" autoDisplay="true">
                <p:submenu label="DI" icon="ui-icon-check">
                    <p:column>
                        <p:submenu label="OPTIONS">
                            <p:menuitem value="Listing" icon="ui-icon-document"
                                ajax="false" action="#{mainMenuMB.listar()}" />
                        </p:submenu>
                    </p:column>
                </p:submenu>
            </p:megaMenu>

            </div>
</h:form>

menuitem listar()提出的另一种形式:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

 <ui:composition template="/_MF/jsf/MainPage.xhtml">
    <ui:define name="conteudo">
        <div id="divListar">
          <h1>User settings.....</h1>
        </div>
    </ui:define>
  </ui:composition>


</html>

1 个答案:

答案 0 :(得分:0)

此问题的解决方案已通过以下两项解决:链接和注释:添加了update =“ content”并删除了标签ajax =“ false”

通过此链接可以正常工作How to ajax-refresh dynamic include content by navigation menu? (JSF SPA) <f:ajax render=":content"> ...

这一个:我添加了update ='content',并删除了ajax =“ false”

 <p:menuitem value="Listing" icon="ui-icon-document" 
                                action="#{mainMenuMB.setPage('Listar')}" update="content"/>