繁体   English   中英

在rich:popupPanel中显示bean值

[英]Show bean values in rich:popupPanel

我有一个rich:dataTable,并且喜欢在用户单击详细信息按钮时在rich:popupPanel中的每一行显示详细信息。

我这样做

                <h:panelGrid columns="3" columnClasses="titleCell">
                    <h:form id="form">
                        <rich:dataScroller for="table" maxPages="5" />
                        <rich:dataTable value="#{tournSelectionBean.tournaments}"
                            var="tourn" id="table" rows="10">
                            <rich:column>
                                <f:facet name="header">
                                    <h:outputText value="Name" />
                                </f:facet>
                                <h:outputText value="#{tourn.name}" />
                            </rich:column>
                            <rich:column>
                            <a4j:commandButton value="Detail"
                                action="#{tournSelectionBean.setCurrentTournament(tourn)}"
                                render=":detailpopup"
                                oncomplete="#{rich:component('detailpopup')}.show();" />
                        </rich:column>
                        </rich:dataTable>
                        <rich:dataScroller for="table" maxPages="5" />
                    </h:form>
                </h:panelGrid>

                <rich:popupPanel id="detailpopup" modal="true" resizeable="false"
                    autosized="true">
                    <f:facet name="header">
                        <h:outputText value="#{tournSelectionBean.currentTournament.name}" />
                    </f:facet>
                    <f:facet name="controls">
                        <h:outputLink value="#"
                            onclick="#{rich:component('detailpopup')}.hide(); return false;">

                        </h:outputLink>
                    </f:facet>
                    <h:panelGrid columns="2" columnClasses="titleCell">

                        <h:outputLabel value="City" />
                        <h:outputLabel
                            value="#{tournSelectionBean.currentTournament.city}" />

                    </h:panelGrid>
                    <a href="#" onclick="#{rich:component('detailpopup')}.hide()">Close</a>
                </rich:popupPanel>

setPropertyActionListener正确设置了ID,并且弹出窗口按预期方式打开。 但是弹出窗口会显示创建视图时在bean中的锦标赛的详细信息(而不是由propertyactionlistner设置的视图)。

我该如何实现?

编辑:更新了上面的代码并添加了Bean:

@Named("tournSelectionBean")
@ViewScoped
public class TournamentSelectionBean implements Serializable {

  @EJB
  private TournamentControllerInterface tournamentController;

  private List<Tournament> tournaments;

  private Tournament currentTournament;

  @PostConstruct
  public void init() {
    tournaments = tournamentController.loadTournaments(true, false);
  }

  /**
   * @return the tournaments
   */
  public List<Tournament> getTournaments() {
    return tournaments;
  }

  /**
   * @param tournaments
   *          the tournaments to set
   */
  public void setTournaments(List<Tournament> tournaments) {
    this.tournaments = tournaments;
  }

  /**
   * @return the currentTournament
   */
  public Tournament getCurrentTournament() {
    return currentTournament;
  }

  /**
   * @param currentTournament the currentTournament to set
   */
  public void setCurrentTournament(Tournament currentTournament) {
    this.currentTournament = currentTournament;
  }

}

您需要告诉JSF重新呈现弹出窗口html,然后再打开它:

<a4j:commandButton value="Detail" 
    action="#{tournSelectionBean.setCurrentTournament(tourn)}"
    render=":detailpopup"
    oncomplete="#{rich:component('detailpopup')}.show();" />

注意:如果popupPanel中有一个<h:form> ,则在重新渲染整个弹出窗口时可能会遇到问题。 将所有内容放入表单内的<h:panelGroup> ,然后重新呈现该内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM