Problema datatable Primefaces 3.0RC2

7 respostas
F

Bom dia,

Estou tentando implementar o meu datatable com selection, eu coloco o atributo rowKey mas mesmo assim da erro:
DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled.
meu .xhtml:
<p:dataTable id="workflowTable" var="workflow" value="#{manageWorkflowsBean.allWorkflows}"
	    emptyMessage="#{msgs.noRecords}" selectionMode="single" selection="#{manageWorkflowsBean.selectedWorkflow}"
	    paginatorPosition="bottom" paginator="true" rows="20" rowKey="#{workflow.key}">
	    
	    <p:column filterBy="#{workflow.key}" sortBy="#{workflow.key}">
	      <f:facet name="header">
	        <h:outputText value="#{msgs.manageWorkflows_workflowName}" />
	      </f:facet>
	      <h:outputText value="#{workflow.key}" />
	    </p:column>...
meu MB:
@Autowired
	private WorkflowRepositoryService workflowRepositoryService;

	private String uploadedDeploymentId;
	// Manage workflows
	private List<ProcessDefinition> allWorkflows;
	private ProcessDefinition selectedWorkflow;

	@PostConstruct
	public void loadWorkflows() {
		log.debug("Loading all the workflows");
		allWorkflows = workflowRepositoryService.getAllWorkflowDefinitions();
	}

	public ProcessDefinition getSelectedWorkflow() {
		return selectedWorkflow;
	}

	public void setSelectedWorkflow(ProcessDefinition selectedWorkflow) {
		this.selectedWorkflow = selectedWorkflow;
	}

	public List<ProcessDefinition> getAllWorkflows() {
		return allWorkflows;
	}

Grato.

7 Respostas

M

veja se isso te ajuda http://www.primefaces.org/showcase-labs/ui/datatableRowSelectionSingle.jsf

F

Estou seguindo este exemplo mesmo, estou fazendo igual, mas mesmo assim, acontece o erro.

B

Ola fernandosc

Voce conseguiu resolver isso ?

Se sim, estou tendo o mesmo problema… e nao sei oq esta acontecendo, nem como resolver…

Compartilhe a solução… rsrsrsrs

Obrigada :slight_smile:

E

Agora podemos criar uma SelectableDataModel. E jogar ela no value da datatable. Segue um exemplo:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package datamodel;

import java.util.List;
import javax.faces.model.ListDataModel;
import modelo.Pessoa;
import org.primefaces.model.SelectableDataModel;

public class PessoaDM extends ListDataModel<Pessoa> implements SelectableDataModel<Pessoa> {

    public PessoaDM() {
    }

    public PessoaDM(List<Pessoa> data) {
        super(data);
    }

    @Override
    public Pessoa getRowData(String rowKey) {

        List<Pessoa> list = (List<Pessoa>) getWrappedData();

        for (Pessoa obj : list) {
            if (obj.getCodigo_pessoa().equals(Long.valueOf(rowKey))) {
                return obj;
            }
        }

        return null;
    }

    @Override
    public Object getRowKey(Pessoa obj) {
        return obj.getCodigo_pessoa();
    }
}
B

Obrigada edudebom

Ajudou bastante… eu so nao entendi o pq preciso criar essa classe. Pq nao pra para passar os valores direto para a tabale, como fazia em uma tabela simples em html. E eu preciso passsar essa classe na minha tabela ? OU eu so passando o bean ele ja reconhece essa classe ?

b10machado

iae pessoal blz

popular da tabela deu certo seguinte esse exemplo, mas estou com um bug

por exemplo ta a tabela la sem usar o FilterValue. filtra bacana porem qdo seleciono os check e executo um actionlistener no retorno ele na recarrega direito a lista por causa do filterby conter valores.

para esse caso parece que se usa o filterValue porem quando eu add ele na datable os filtros não faz o filtro do campos corretamente…

alguem passou por isso??

b10machado

na datatable deixara como???

<p:dataTable id="tableProdutos" value="#{pnMB.listDataModelProd}" var="q" emptyMessage="No Registry" 
                             paginator="true" rows="50" editable="true"
                              paginatorTemplate= " {CurrentPageReport}  {FirstPageLink} {PreviousPageLink} 
                               {PageLinks} {NextPageLink} {LastPageLink} 
                               {RowsPerPageDropdown}"
                               filteredValue="#{pnMB.listDataModelProdFilter}"
                               selection="#{pnMB.listDataModelProdFilter}" >


 <p:column id="ativo" headerText="Ativo" filterBy="#{????}"  filterMatchMode="startsWith"
                              filterStyle="width: 40px;" >
                        <h:outputText value="#{q.ativo}"/>
                    </p:column>
Criado 21 de dezembro de 2011
Ultima resposta 20 de ago. de 2013
Respostas 7
Participantes 5