Fala galera.
To com um probleminha.
Implementei uma paginação sob demanda criando uma classe que extende de dataModel que está funcionando normalmente, porém não consigo atribuir valor a minha entidade da lista.
Minha entidade tem um transient booleano que será setado por um checkbox dentro do meu dataTable.
Depois de escolher o checkbox e clicar no botao faço um for na lista pra ver quem foi selecionado, porem nenhum objeto ta com o valor true. Se eu colocar um ListDataModel normal, ele funciona tranquilo mas sem a paginação sobDemanda.
Minha lista:
private PagedDataModel listagem;
Minha classe PagedDataModel que utilizo para ser inserido no dataTable:
public class PagedDataModel extends DataModel {
private int rowIndex = -1;
private int totalNumRows;
private int pageSize;
private List list;
public PagedDataModel() {
super();
}
public PagedDataModel(final List list, final int totalNumRows) {
super();
setWrappedData(list);
this.totalNumRows = totalNumRows;
this.pageSize = list.size();
}
public PagedDataModel(final List list) {
super();
setWrappedData(list);
this.pageSize = list.size();
}
@Override
public boolean isRowAvailable() {
if(list == null)
return false;
final int rowIndex = getRowIndex();
if(rowIndex >=0 && rowIndex < list.size())
return true;
else
return false;
}
@Override
public int getRowCount() {
return totalNumRows;
}
@Override
public Object getRowData() {
if(list == null)
return null;
else if(!isRowAvailable())
throw new IllegalArgumentException();
else {
final int dataIndex = getRowIndex();
return list.get(dataIndex);
}
}
@Override
public int getRowIndex() {
return (rowIndex % pageSize);
}
@Override
public void setRowIndex(final int rowIndex) {
this.rowIndex = rowIndex;
}
@Override
public Object getWrappedData() {
return list;
}
@Override
public void setWrappedData(final Object list) {
System.out.println("");
this.list = (List) list;
}
Meu dataTable:
<t:dataTable border="0" id="dataSistema" value="#{mbean.listagem}" var="item" >
<t:column id="clnSeleciona">
<f:facet name="header">
<h:selectBooleanCheckbox id="slcSelecionaTodos" onclick="javascript: return marcarTodos('_form:dataSistema:slcSelecionaTodos');" />
</f:facet>
<h:selectBooleanCheckbox id="slcSelecionado" value="#{item.selecionado}" />
</t:column>
.
.
.
For na lista pra pegar os selecionados:
for (int i = 0; i < getListagem().getRowCount(); i ++) {
getListagem().setRowIndex(i);
final Empreendimento empreendimento = (Empreendimento) getListagem().getRowData();
if (empreendimento.getSelecionado()) {
//action
}
}
Alguem tem uma luz???