2011-02-23 75 views
3

我在我的项目中使用了richfaces,特别是标签丰富的:modalPanel,它允许在页面中显示弹出窗口。Richfaces modalpanel加载Ajax

因此,要做到这一点,我有我的弹出这样的:

<ui:include src="popup.xhtml" /> 

此弹出包含此代码:

<rich:modalPanel id="sra" width="400" autosized="true" left="100" > 
... 
</rich:modalPanel> 

最后显示弹出,我在主要页面做到这一点:

<a4j:commandLink id="linkSRA" value="#{msg['SRA']}" action="#{controller.checkSRA}" oncomplete="#{rich:component('sra')}.show()" /> 

所有工作都不错,但我的问题是下一个:

在一个页面中,我有许多弹出窗口,每个弹出窗口都包含在主页面中。这一个的重量是非常大的。那么,当我想要加载弹出窗口时,如何在ajax中加载弹出窗口的内容?

感谢

回答

2

重新渲染通过一些操作面板的内容,然后在的onComplete =打开模式“..”

+0

所以我必须在我的bean中存储rerender值?指示内容是否必须呈现的布尔值? – Kiva 2011-02-23 16:45:22

+0

只是为了更好地理解,你想重新渲染模态面板内容还是实际的模态面板? – 2011-02-23 22:09:21

+0

根据你的建议,我认为当你点击一个链接(或任何显示这种模式的事件)时,显示实际的模态面板。 – Kiva 2011-02-24 08:45:59

0

我有写一点文章:‘如何创建一个有状态的RichFaces弹出’在那里我展示了如何创建一个弹出控制器。该弹出控制器允许几行,以取代所有的模态标签:

<a4j:outputPanel binding="#{popupController.popupContainer}" id="popupContainer"> 
<c:forEach items="#{popupController.popups}" var="popup"> 
<f:subview id="popupView#{popup.id}"> 
<ui:include src="#{popup.uri}"> 
<ui:param name="popupBean" value="#{popup.popupBean}"/> 
</ui:include> 
</f:subview> 
</c:forEach> 
</a4j:outputPanel> 

的文章可以here。对不起,在这里直接粘贴太长了。

+0

我会去阅读你的文章,但我对你的快照有一个评论。您使用c:forEach标记,但有时,richfaces标记和jstl标记之间会出现冲突。 – Kiva 2011-02-24 11:02:34

+0

我看过你的文章,这个想法很有意思。我有一些问题,为什么你使用关键字同步添加或删除方法?对于弹出的ID,你使用一个整数,但在许多用户的生产中,你可以溢出整数大小? – Kiva 2011-02-24 11:28:35

+0

我与c:forEach没有任何冲突。 你说得对,int可以溢出。 IT可能会更好地使用很长时间。对于10 popup/s,int将溢出至7年。 我使用synchronized关键字,因为用户倾向于多次点击。 “add”和“remove”方法使用弹出列表,直到这些方法结束时才应该修改它们。我同意它可以改进。 – 2011-02-24 11:57:42