Java 具有多个p:dataTable的行选择

Java 具有多个p:dataTable的行选择,java,primefaces,xhtml,Java,Primefaces,Xhtml,在下面的场景中,我在ui:repeat标记上迭代构建了几个数据表,我体验到行侦听器为不在第一个表中的选定元素返回null 为了理解模型对象,我有几个菜单,每个菜单都包含几个区域 任何帮助都将不胜感激 下面是xhtml: <ui:repeat value="#{someBean.menus}" var="menu"> <p:dataTable var="area" value="#{menu.areas}" rowKey=

在下面的场景中,我在ui:repeat标记上迭代构建了几个数据表,我体验到行侦听器为不在第一个表中的选定元素返回null

为了理解模型对象,我有几个菜单,每个菜单都包含几个区域

任何帮助都将不胜感激

下面是xhtml:

<ui:repeat value="#{someBean.menus}" var="menu">                

    <p:dataTable var="area" value="#{menu.areas}"
        rowKey="#{area.id}" selection="#{menu.area}" selectionMode="single">

        <p:ajax event="rowSelect" listener="#{someBean.rowSelected}" />

        <f:facet name="header">#{menu.name}</f:facet>

        <p:column>  
            <f:facet name="header"></f:facet>  
            <h:outputText value="#{area.id}" />  
        </p:column>  

        <p:column>  
            <f:facet name="header">Area name</f:facet>  
            <h:outputText value="#{area.name}" />  
        </p:column>  

    </p:dataTable>

</ui:repeat>

我很高兴向您展示解决方案:用另一个p:dataTable替换ui:repeat

<p:dataTable value="#{someBean.menus}" var="menu">

    <p:column>                  

        <p:dataTable var="area" value="#{menu.areas}"
          rowKey="#{area.id}" selection="#{menu.area}" selectionMode="single">

          <p:ajax event="rowSelect" listener="#{someBean.rowSelected}" />

          <f:facet name="header">#{menu.name}</f:facet>

          <p:column>  
             <f:facet name="header"></f:facet>  
             <h:outputText value="#{area.id}" />  
          </p:column>  

          <p:column>  
             <f:facet name="header">Area name</f:facet>  
             <h:outputText value="#{area.name}" />  
          </p:column>  

       </p:dataTable>

    </column>

</p:dataTable>
public void rowSelected(SelectEvent event) {
    Area selectedArea = (Area)event.getObject(); //This, is null for other tables except the first
    System.out.println("SELECTED AREA:" + selectedArea);
    //...
}
<p:dataTable value="#{someBean.menus}" var="menu">

    <p:column>                  

        <p:dataTable var="area" value="#{menu.areas}"
          rowKey="#{area.id}" selection="#{menu.area}" selectionMode="single">

          <p:ajax event="rowSelect" listener="#{someBean.rowSelected}" />

          <f:facet name="header">#{menu.name}</f:facet>

          <p:column>  
             <f:facet name="header"></f:facet>  
             <h:outputText value="#{area.id}" />  
          </p:column>  

          <p:column>  
             <f:facet name="header">Area name</f:facet>  
             <h:outputText value="#{area.name}" />  
          </p:column>  

       </p:dataTable>

    </column>

</p:dataTable>