Java 部分页面呈现(primefaces)在更改之前需要单击两次

Java 部分页面呈现(primefaces)在更改之前需要单击两次,java,jsf,primefaces,Java,Jsf,Primefaces,我正在尝试将答案应用于呈现primefaces页面的一部分,但问题是,在更改该部分之前,我需要单击两次。有解决方案吗 这是我的密码 index.xhtml <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core" xmln

我正在尝试将答案应用于呈现primefaces页面的一部分,但问题是,在更改该部分之前,我需要单击两次。有解决方案吗

这是我的密码

index.xhtml

 <html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets">
 <h:head>
 </h:head>
  <h:body>
    <h:panelGroup id="header" layout="block">
        <h1>Header</h1>
    </h:panelGroup>
    <h:panelGroup id="menu" layout="block">
        <h:form>
            <f:ajax render=":content">
                <p:commandButton value="next" action="#{navBean.next}" />            
                <p:commandButton value="back" action="#{navBean.back}" />
            </f:ajax>
        </h:form>
    </h:panelGroup>
    <h:panelGroup id="content" layout="block">
        <h:panelGroup rendered="#{navBean.activePage == 'firstAjax'}">
            <ui:include src="firstAjax.xhtml" />
        </h:panelGroup>
        <h:panelGroup rendered="#{navBean.activePage == 'lastAjax'}">
            <ui:include src="lastAjax.xhtml" />
        </h:panelGroup>
    </h:panelGroup>
   </h:body>
  </html>
firstAjax.xhtml和lastAjax.xhtml几乎相同

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:ui="http://java.sun.com/jsf/facelets">
<h:form>
    <h2>content first</h2>
</h:form>
</ui:composition>

内容优先

您的页面无法工作,因为PrimeFaces有自己的ajax引擎。使用
p:commandButton
时必须使用它。您不需要使用
p:ajax
标记,因为默认情况下
p:commandButton
激活了ajax行为,只需使用
update
属性(相当于
f:ajax
组件的
render
属性):


如果您想坚持使用简单的jsf,请改用它(它看起来更像您提到的BalusC的示例):


最后,必须指出的是,
p:ajax
标记(至少在PrimeFaces 4.0中)不支持我们在
p:commandButton
组件之外使用的语法,因为它无法确定事件属性,因此抛出:
无法确定事件属性:null

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:ui="http://java.sun.com/jsf/facelets">
<h:form>
    <h2>content first</h2>
</h:form>
</ui:composition>
<h:form>
    <p:commandButton value="next" action="#{navBean.next}" update=":content"/>            
    <p:commandButton value="back" action="#{navBean.back}" update=":content"/>
</h:form>
<h:form>
    <f:ajax render=":content" >
        <h:commandButton value="next" action="#{navBean.next}" />            
        <h:commandButton value="back" action="#{navBean.back}" />
    </f:ajax>
</h:form>