2011-05-14 68 views
1

我有一個基類,它是普通的Java類。三個子類擴展它,它們是@ViewScoped beans。有一個facelet使用動態變量。我有三個xhtml頁面,它們使用這個facelets和三個bean即viz。 bean1, bean2 and bean3,它們動態地包含在主頁上的rich:tab組件中。 目前爲止這麼好。但是在每個頁面上都有一些應該引用當前bean的彈出窗口。並且由於這些彈出窗口需要內部標籤form,我已將它們包含在主頁的窗體標籤之外,以避免嵌套form標籤。現在我希望彈出窗口引用當前的bean(bean1,bean2或bean3,取決於彈出窗口的調用位置)。我如何實現這一目標?將bean動態傳遞給rich:popupPanel

+0

您RichFaces的版本和JSF版本的代碼片段將是有益的:) – kinkajou 2011-05-14 11:12:22

回答

0

嘗試這樣:

  1. 添加一個新的bean(popupBean)將包含在彈出參考當前Bean。

  2. 添加一個動作,將需要的bean設置爲屬性popupBean。例如:

    <h:commandLink> 
        <a4j:ajax render="myPopup"/> 
        <f:setPropertyActionListener target="#{popupBean.currentBean}" value="#{bean1}"/> 
        <h:outputText value="Click ME!"/> 
    </h:commandLink> 
    
  3. 使用showrich:popupPanel屬性顯示彈出:

    <rich:popupPanel id="myPopup" modal="true" width="600" moveable="true" 
         show="#{not empty popupBean.currentBean}" onmaskclick="#{rich:component('myPopup')}.hide();" autosized="true"> 
        <f:facet name="header"><h:outputText value="Cool popup!"/></f:facet> 
        <h:panelGrid style="margin: 0"> 
         <h:panelGroup style="max-height: 400px;overflow-y: auto;" layout="block"> 
          <h:outputText value="#{popupBean.currentBean.myBeanProperty}"/> 
         </h:panelGroup> 
         <h:button value="Close" onclick="#{rich:component('myPopup')}.hide();return false;"/> 
        </h:panelGrid> 
    </rich:popupPanel>