Note that there are some explanatory texts on larger screens.

plurals
  1. PORow selection with multiple p:dataTable
    primarykey
    data
    text
    <p>In the following scenario, where I have several dataTables that I build iterating over a ui:repeat tag, I have experienced that row listener returns null for selected elements that are not in the first table.</p> <p>In order to understand the model object, I have several menus, and each of them contains several areas.</p> <p>Any help will be much appreciated.</p> <pre><code>&lt;ui:repeat value="#{someBean.menus}" var="menu"&gt; &lt;p:dataTable var="area" value="#{menu.areas}" rowKey="#{area.id}" selection="#{menu.area}" selectionMode="single"&gt; &lt;p:ajax event="rowSelect" listener="#{someBean.rowSelected}" /&gt; &lt;f:facet name="header"&gt;#{menu.name}&lt;/f:facet&gt; &lt;p:column&gt; &lt;f:facet name="header"&gt;&lt;/f:facet&gt; &lt;h:outputText value="#{area.id}" /&gt; &lt;/p:column&gt; &lt;p:column&gt; &lt;f:facet name="header"&gt;Area name&lt;/f:facet&gt; &lt;h:outputText value="#{area.name}" /&gt; &lt;/p:column&gt; &lt;/p:dataTable&gt; &lt;/ui:repeat&gt; public class Areas extends ListDataModel&lt;Area&gt; implements SelectableDataModel&lt;Area&gt;, Serializable { private static final long serialVersionUID = -9102592194300556930L; public Areas() { } public Areas(List&lt;Area&gt; data) { super(data); } @Override public Area getRowData(String rowKey) { @SuppressWarnings("unchecked") List&lt;Area&gt; areas = (List&lt;Area&gt;)getWrappedData(); for (Area area : areas) { if (String.valueOf(area.getId()).equals(rowKey)) { return area; } } return null; } @Override public Object getRowKey(Area area) { return area.getId(); } } public class Menus extends ListDataModel&lt;Menu&gt; implements SelectableDataModel&lt;Menu&gt;, Serializable { private static final long serialVersionUID = -4079772686830676202L; public Menus() { } public Menus(List&lt;Menu&gt; data) { super(data); } @Override public Menu getRowData(String rowKey) { @SuppressWarnings("unchecked") List&lt;Menu&gt; menus = (List&lt;Menu&gt;)getWrappedData(); for (Menu menu : menus) { if (String.valueOf(menu.getId()).equals(rowKey)) { return menu; } } return null; } @Override public Object getRowKey(Menu menu) { return menu.getId(); } } </code></pre> <p>...in the bean someBean</p> <pre><code>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); //... } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload