【发布时间】:2014-07-22 14:00:33
【问题描述】:
我想使用 ui:include 包含来自另一个页面的 primefaces 对话框的内容。包含的页面必须根据用户单击的按钮设置为动态的。我使用了来自 JSF dynamic include using Ajax request 的 BalusC 的非常有用的答案。
它在示例中工作得非常好。但是如果我使用 p:dialog 而不是 h:panelGroup 就会出现问题:
<h:form>
<f:ajax render=":dialog">
<p:commandButton value="page1" action="#{productBean.setDialogPage('/page1.xhtml')}" oncomplete="dialogWidget.show()"></p:commandButton>
<p:commandButton value="page2" action="#{productBean.setDialogPage('/page2.xhtml')}" oncomplete="dialogWidget.show()"></p:commandButton>
</f:ajax>
</h:form>
<p:dialog id="dialog" widgetVar="dialogWidget" >
<ui:include src="#{productBean.dialogPage}" />
</p:dialog>
第一个问题:有时,我必须在对话框出现之前多次单击一个按钮。它似乎没有遵循任何模式,而是一种随机效应。有时需要单击两次,有时需要单击按钮四次。
第二个问题:有时,对话框出现的不是所选页面而是旧页面。当我关闭对话框并再次选择时,将加载当前页面。这似乎也是一种随机效应。
为什么我会在对话框中遇到这个问题?
【问题讨论】:
-
我在 Bean 中调试了 getDialogPage() 和 setDialogPage() 的调用。我注意到,当一切正常时,调用顺序是 get-SET-get-get-get。但是当我得到旧的错误页面时,顺序是get-get-get-SET-get。
标签: jsf jsf-2 primefaces