2011-02-23 73 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