2011-05-14 70 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>