Pessoal
Tenho uma dataTable do primefaces e uma das colunas dela eh uma checkbox,
O visual esta fazendo certo, soh que quando se seleciona o cks o array de itens selecionados nao esta sendo selecionado, alguem tem alguma dica? segue
[code]
<h:form id=“formulario”>
<p:dataTable id=“multiCars” var=“item” value="#{testeController.empresasTiposAjustes}" paginator=“true” rows=“10”
selection="#{testeController.empresasSelected}">
<p:column id="columnCheckBox" selectionMode="multiple" />
<p:column id="column">
<h:outputText>#{item.tipoAjuste}</h:outputText>
</p:column>
<p:column id="column2">
<h:outputText value="#{item.txtAjuste}"/>
</p:column>
<f:facet name="footer">
<p:commandButton id="adicionarLinha"
actionListener="#{testeController.adicionarLinha}" value="adicionar linha"
update=":formulario:multiCars" process="@this"/>
<p:commandButton id="excluirLinha" actionListener="#{testeController.excluirLinha}"
value="excluir linha" partialSubmit="true" update=":formulario:multiCars"/>
<p:commandButton id="multiViewButton" value="View" icon="ui-icon-search"
update=":formulario:displayMulti" oncomplete="multiCarDialog.show()"/>
</f:facet>
</p:dataTable>
<p:dialog id="multiDialog" header="Car Detail" widgetVar="multiCarDialog"
height="300" showEffect="fade" hideEffect="explode">
<p:dataList id="displayMulti"
value="#{testeController.empresasSelected}" var="selectedCar">
Model: #{selectedCar.tipoAjuste}
</p:dataList>
</p:dialog>
</h:form>[/code]
managedbean
@ManagedBean
@SessionScoped
public class TesteController {
private SelectListDataModel<EmpresaTipoAjuste> empresasTiposAjustes = null;
private EmpresaTipoAjuste[] empresasSelected;
public TesteController() {
}
public void adicionarLinha(ActionEvent e) {
if (this.getEmpresasTiposAjustes() == null) {
this.setEmpresasTiposAjustes(new SelectListDataModel<EmpresaTipoAjuste>(new ArrayList<EmpresaTipoAjuste>()));
}
for (int i = 0; i < 10; i++) {
EmpresaTipoAjuste empresaTipoAjuste = new EmpresaTipoAjuste();
empresaTipoAjuste.setTipoAjuste(i);
empresaTipoAjuste.setTxtAjuste(i+"");
this.getEmpresasTiposAjustes().add(empresaTipoAjuste);
}
}
public void excluirLinha(ActionEvent e) {
this.getEmpresasSelected();
// this.getEmpresasTiposAjustes().remove(this.getEmpresasSelected());
}
public SelectListDataModel<EmpresaTipoAjuste> getEmpresasTiposAjustes() {
return empresasTiposAjustes;
}
public void setEmpresasTiposAjustes(SelectListDataModel<EmpresaTipoAjuste> empresasTiposAjustes) {
this.empresasTiposAjustes = empresasTiposAjustes;
}
public EmpresaTipoAjuste[] getEmpresasSelected() {
return empresasSelected;
}
public void setEmpresasSelected(EmpresaTipoAjuste[] empresasSelected) {
this.empresasSelected = empresasSelected;
}
}[/code]
Bean
[code]@Entity
@Table(name = "ADM_EMPRESA_TIPO_AJUSTE")
public class EmpresaTipoAjuste extends AbstractEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID_ADM_EMPRESA_TIPO_AJUSTE")
private Integer id;
@NotNull
@ManyToOne
@JoinColumn(name="ID_ADM_EMPRESA")
private Empresa empresa;
@NotNull
@Column(name = "TIPO_AJUSTE")
private Integer tipoAjuste;
//TODO trocar o nome para textoAjuste, ou texto, e nao TXT
@NotEmpty
@Column(name = "TXT_AJUSTE")
private String txtAjuste;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
public Integer getTipoAjuste() {
return tipoAjuste;
}
public void setTipoAjuste(Integer tipoAjuste) {
this.tipoAjuste = tipoAjuste;
}
public String getTxtAjuste() {
return txtAjuste;
}
public void setTxtAjuste(String txtAjuste) {
this.txtAjuste = txtAjuste;
}
}[/code]
Wrapper de list do primefaces
[code]public class SelectListDataModel<T extends AbstractEntity> extends ListDataModel<T> implements SelectableDataModel<T>, Serializable {
private static final long serialVersionUID = 1L;
public SelectListDataModel() {
}
public SelectListDataModel(List<T> data) {
super(data);
}
public void add(T t) {
List<T> objects = (List<T>) getWrappedData();
objects.add(t);
}
public void remove(T t) {
List<T> objects = (List<T>) getWrappedData();
objects.remove(t);
}
@SuppressWarnings("unchecked")
@Override
public T getRowData(String rowKey) {
//In a real app, a more efficient way like a query by rowKey should be implemented to deal with huge data
List<T> objects = (List<T>) getWrappedData();
for(T obj : objects) {
if(obj.getId().equals(Integer.valueOf(rowKey)))
return obj;
}
return null;
}
@Override
public Object getRowKey(T obj) {
return obj.getId();
}
}