Java 部分页面呈现(primefaces)在更改之前需要单击两次
我正在尝试将答案应用于呈现primefaces页面的一部分,但问题是,在更改该部分之前,我需要单击两次。有解决方案吗 这是我的密码 index.xhtmlJava 部分页面呈现(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
<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>