Ale*_*ert 2 jsf primefaces jsf-2
我想用ui:include包含来自另一个页面的primefaces对话框的内容.必须根据用户单击的按钮将包含的页面设置为动态.我使用了来自BalusC的非常有用的答案来自JSF动态包括使用Ajax请求.
它在例子中非常精细.但是如果我使用ap: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>
Run Code Online (Sandbox Code Playgroud)
第一个问题:有时,在对话框出现之前,我必须多次单击一个按钮.它似乎不遵循任何模式,但是随机效应.有时我需要点击两次,有时我需要在按钮上单击四次.
第二个问题:有时,对话框不会显示所选页面,而是显示旧页面.当我关闭对话框并再次选择时,将加载当前页面.它似乎也是一种随机效应.
为什么我会在对话框中遇到这个问题?
小智 8
hy,我不知道为什么你用这个模式显示动态对话框,对我来说,我喜欢使用这个模式:
<h:form>
<p:commandButton value="page1"
actionListener="#{productBean.setDialogPage('page1')}" oncomplete="PF('dialogWidget').show()" update="dialog"/>
<p:commandButton value="page2"
actionListener="#{productBean.setDialogPage('page2')}" oncomplete="PF('dialogWidget').show()" update="dialog"/>
</h:form>
<p:dialog id="dialog" widgetVar="dialogWidget">
<ui:include src="/#{productBean.dialogPage}.xhtml" />
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
和:
page1.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:form>
<!-- your code -->
</h:form>
</ui:composition>
Run Code Online (Sandbox Code Playgroud)
它工作得很好:)
| 归档时间: |
|
| 查看次数: |
21371 次 |
| 最近记录: |