p:ajax内部ui:include不更新内容(Facelets+PrimeFaces)

p:ajax内部ui:include不更新内容(Facelets+PrimeFaces),ajax,jsf,include,primefaces,Ajax,Jsf,Include,Primefaces,我对PrimeFaces AJAX和UI:Include有问题。我试图通过使用tagui:include来创建一个基于AJAX的web表单:当我单击菜单按钮时,它会更改include上的SRC并加载下一个页面。一切正常,但当我尝试在ui:include加载的页面上使用一些AJAX时,它不会更新。好吧,我想代码会显示我的意思: 主页: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/h

我对PrimeFaces AJAX和UI:Include有问题。我试图通过使用tagui:include来创建一个基于AJAX的web表单:当我单击菜单按钮时,它会更改include上的SRC并加载下一个页面。一切正常,但当我尝试在ui:include加载的页面上使用一些AJAX时,它不会更新。好吧,我想代码会显示我的意思:

主页:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html">
    <h:head>
        <f:facet name="first">
            <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
            <title>PrimeFaces</title>
        </f:facet>
        <ui:include src="#{layout.head}"></ui:include>
    </h:head>
    <h:body>
        <h:form>
        <p:layout fullPage="true" >
            [...]
            <p:layoutUnit position="center">
                <p:panel styleClass="noBorder" id="#{pageFlow.panelId}">
                    <ui:insert name="mainContent">
                        <ui:include src="#{pageFlow.page}"/>
                    </ui:insert>
                </p:panel>
            </p:layoutUnit>
        </p:layout>
        <p:growl id="globalMessages" showDetail="true" severity="warn, error, fatal" autoUpdate="true"></p:growl>
        </h:form>
    </h:body>
</f:view>
</html>
template.xhtml-要加载的页面包括:

<ui:fragment
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:p="http://primefaces.org/ui"
  xmlns:ui="http://java.sun.com/jsf/facelets">
    <p:messages  id="resultMessage" showDetail="true" severity="info" autoUpdate="true" closable="true"/>
    <p:panel  styleClass="noBorder">
        <p:panel id="templateBody" header="Cadastro de Template" style="margin: 10px">
            <h:panelGrid cellpadding="3">
                <p:row>
                    <p:column><h:outputLabel value="Nome: "/></p:column>
                    <p:column><p:inputText value="#{template.name}"/></p:column>
                    <p:column><h:outputLabel value="Descrição: "/></p:column>
                    <p:column><p:inputText value="#{template.description}"/></p:column>
                </p:row>
                <p:row><p:column><p:separator/></p:column></p:row>
                <p:row>
                    <p:column><h:outputLabel style="vertical-align: middle" value="Provedor: "/></p:column>
                    <p:column>
                        <p:selectOneMenu style="vertical-align: middle" validator="selectOneMenuValidator" converter="selectOneMenuConverter" id="providers" value="#{template.providerName}">
                            <f:selectItems value="#{template.testItems}"/>
                            <f:attribute name="fieldName" value="template.providerName"/>
                            <p:ajax update="selectAvaliableItems"/>
                        </p:selectOneMenu>
                    </p:column>
                </p:row>
                <p:row>
                    <p:column>
                        <p:panel id="selectItem" styleClass="noBorder" style="alignment-adjust: central; float: left; height: 200px; width: 100%">
                            <p:selectManyMenu converter="selectManyMenuConverter" validator="selectManyMenuValidator" value="#{template.selectedAvaliableItems}" style="float: left; height: 180px; width: 300px" id="selectAvaliableItems">
                                <f:selectItems value="#{template.avaliableItems}"/>
                                <f:attribute name="fieldName" value="template.selectedAvaliableItems"/>
                            </p:selectManyMenu>
                            <p:panel styleClass="noBorder" style="float: left; height: 180px; width: 75px">
                                <p:commandButton value="&gt;&gt;" update="selectItem" actionListener="#{template.setAction(8+0)}"/>
                                <p:commandButton value="&gt;" update="selectItem" actionListener="#{template.setAction(8+1)}"/>
                                <p:commandButton value="&lt;" update="selectItem" actionListener="#{template.setAction(16+1)}"/>
                                <p:commandButton value="&lt;&lt;" update="selectItem" actionListener="#{template.setAction(16+0)}"/>
                            </p:panel>
                            <p:selectManyMenu converter="selectManyMenuConverter" validator="selectManyMenuValidator" value="#{template.selectedChosenItems}" style="float: left;height: 180px; width: 300px" id="selectSelectedItems">
                                <f:selectItems value="#{template.chosenItems}"/>
                                <f:attribute name="fieldName" value="template.selectedChosenItems"/>
                            </p:selectManyMenu>
                        </p:panel>
                    </p:column>
                </p:row>
                <p:row>
                    <p:column>
                        <p:commandButton id="saveBtn" value="Salvar" update="templateBody" action="#{template.sendData}"/>
                    </p:column>
                    <p:column>
                        <p:commandButton value="Cancelar" update="@all" action="home"/>
                    </p:column>
                </p:row>
            </h:panelGrid>
        </p:panel>
    </p:panel>
    <p:blockUI block="templateBody" trigger="saveBtn providers">
            <p:graphicImage value="./files/img/todo/loading.gif" />
    </p:blockUI>
</ui:fragment>
flowPage bean很好地完成了它的工作,它返回一个字符串,该字符串带有要在单击的菜单按钮上加载的文件名。问题是template.xhtml上的每个AJAX都不会更新其内容。blockUI被调用,我得到了一个请求,但没有内容更新

有什么想法吗

如果我删除ui:include并使用模板策略,它可以正常工作,但我需要一个AJAX导航页面


谢谢你的注意。

我发现了问题。当我执行一个新请求时,我的pageFlowBean是新实例,getPage返回null。谢谢您的关注。请添加您的答案并接受它,以供将来的观众。