Как узнать, какие строки были выбраны из DataTable - PullRequest
1 голос
/ 02 сентября 2011

У меня есть страница с «rich: DataTable». Для каждой строки таблицы добавлен флажок, позволяющий пользователю выбрать более одной строки перед выполнением операции. Как получить выбранные строки?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

[решено] Я решил иначе.Добавлена ​​«Карта» и столбец с «CheckBox» следующим образом: «».Отправив форму, выбранные строки «Map» получат логическое свойство, равное «true».

My Bean:

public class Bean<T extends Object> {
    private Map<T, Boolean> selectedRowsMap = new HashMap<T, Boolean>(0);
    ...
    public Set<T> getSelectedRows() {
        selectedRows.clear();
        for (T key : getSelectedRowsMap().keySet()) {           
            if (getSelectedRowsMap().get(key) == true){
                selectedRows.add(key);              
            }
        }

        return selectedRows;
    }
}

My XHTML:

<rich:dataTable>
    <rich:column>
        <h:selectBooleanCheckbox value="#{bean.selectedRowsMap[row]}" />
    </rich:column>
    <rich:column>
        <h:outputText value="${row.age}" />
    </rich:column>
    ...
<rich:dataTable>
0 голосов
/ 03 сентября 2011

Просто добавьте логическое значение, возможно, называемое selected, к POJO, представляющему строку для rich:DataTable. И свяжите это логическое значение с <h:selectBooleanCheckbox> в <rich:column> внутри <rich:dataTable>

Например, ваши бобы, POJO и представление могут выглядеть так:

<rich:dataTable value="#{myBean.customerList}" var="customer">
  <rich:column>
   <h:selectBooleanCheckbox value="#{customer.selected}" /> 
  </rich:column>    
  <rich:column>
    <h:outputText value="#{customer.name}" />
  </rich:column>
  <rich:column>
    <h:outputText value="#{customer.address}" />
  </rich:column>
</rich:dataTable>


public class MyBean {

    private List<Customer> customerList;

    //getter and setter for the customerList
}


public class Customer{

    private boolean selected;
    private String name; 
    private String address;

    //getter and setter for the properties
}

Чтобы получить выбранные строки, просто выполните итерацию MyBean.customerList и проверьте, является ли свойство selected Customer true.

...