[RESOLVIDO] Pegar Dados de um datatable JSF+PRIME FACES

10 respostas Resolvido
Emillyewilliammorett

Boa Tarde,
Pessoal Queria um exemplo de como pegar um dado do meu datatable e colocar esse dado em um outro imput text de outra pagina.
Exemplo, tenho uma pagina com o cadastro só de clientes e quero que na tela de atendimento eu posso abrir a pagina de cadastro de clientes e pegar por exemplo o nome do cliente e colocar em um imput text ou outro campo. e consequentemente pegar o id desse cliente e gravar na tabela do atendimento.
estou utilizando JSF+Hibernate+prime Faces
Obrigado

10 Respostas

Fabricio_Bizo

Opa.

Da uma olhada no showcase do primefaces. Talvez consiga resolver seu problema.
http://www.primefaces.org/showcase/

Emillyewilliammorett

Opa, ja olhei mais nao consegui nada que me ajudasse.
Alguem tem só algum exemplo pra mostrar como se faz… pesquisei muito na internet, tem muita coisa, mais nada que me ajuda
Obrigado

Fabricio_Bizo

Fiz um exemplo de CRUD de clientes.

Segue em anexo.
JsfCrud.zip (12.1 KB)

Emillyewilliammorett

Bom dia,
Fiz o teu exemplo, mais quando vai pro datatable e clico em uma linha nada acontece. sera que é alguma biblioteca ou algo desatualizado, pois no seu projeto voce utilizou esse parametros
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p=“http://primefaces.org/ui

e no meu eu estou utilizando

xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p=“http://primefaces.org/ui

Fabricio_Bizo
Solucao aceita

Isso não deve ser o problema.

O que você precisa é fazer da mesma forma que o primefaces mostra na página do showcase da biblioteca (http://www.primefaces.org/showcase/ui/data/datatable/basic.xhtml)

No datatable (que deve estar dentro de um h:form) você precisa colocar o comando p:ajax com o evento onRowSelect e no listener você informa o método criado no ManagedBean (lembrando que o ManagedBean deve ter a anotação @SessionScope, pois você vai redirecionar para outra página).

Segue imagens em anexo.

Emillyewilliammorett

Boa tarde,
meu projeto esta igual ao teu exemplo com segue abaixo
minha pagina

Clientes

<p:dataTable id="clientes"  var="cliente"  value="#{clienteBack.clientes}"  selectionMode="single" selection="#{clienteBack.clienteSelecionado}" rowKey="#{cliente.id}"   >
  
  <p:ajax event="rowSelect" listener="#{clienteBack.onRowSelect}"  />
   
    <p:column headerText="#">
                <h:outputText value="#{cliente.id}" />
            </p:column>
    
      <p:column headerText="Nome">
                <h:outputText value="#{cliente.nome}" />
            </p:column>
    
       </p:dataTable>
     
  </h:form>

meu bean

@ManagedBean(name = clienteBack)

@SessionScoped

public class ClienteBack {

private ClienteEntity clienteSelecionado;
private List clientes;

public ClienteEntity getClienteSelecionado() {
return clienteSelecionado;

}

public void setClienteSelecionado(ClienteEntity clienteSelecionado) {

this.clienteSelecionado = clienteSelecionado;

}
public List<ClienteEntity> getClientes() {
	return clientes;
}

public void setClientes(List<ClienteEntity> clientes) {
	this.clientes = clientes;
}

@PostConstruct
public void inicializar(){
	clienteSelecionado = new ClienteEntity();
clientes = new ClienteBO().listarTodos(ClienteEntity.class);
}

//selecionar o clienteonRowSelect
 public void onRowSelect(SelectEvent event) {
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
        } catch (IOException iOException) {
            iOException.printStackTrace();
        }
    }

Obs: Meu data table lista todos meus clientes do banco de dado, quando passo o mouse em cima ele não fica com o cursor como uma mão para selecionar, consequentemente não faz nada quando clico;

Fabricio_Bizo

Seu datatable deve estar dentro de um h:form

Emillyewilliammorett

Ele Ja esta dentro de um h:form só nao apareceu ali na imagem

jacoboliveira

mostra todo o teu xhtml que tem o <p:datatable/>

Emillyewilliammorett

Boa Tarde,
Deu certo , era uma script da minha pagina que bloqueava o clique no datatable. retirei ele e deu certo.
Obrigado A todos

Criado 13 de junho de 2016
Ultima resposta 15 de jun. de 2016
Respostas 10
Participantes 3