Jsf

6 respostas
D

E ae galera!!

Preciso de uma maozinha!!!

A ideia é fazer o componente “h:selectOneMenu” "h:selectOneMenu " listar os dados de um campo na tabela do Banco de Dados e ao escolher um item da lista. O componete “rich:dataTable” “rich:dataTable” carrega automaticamente os dados de outro
campo da tabela, ou seja:

Ao escolher o nome no “h:selectOneMenu” “h:selectOneMenu”
usando ajax vai aparecer os outros dados no “rich:dataTable” “rich:dataTable”.

O conteúdo desta, pode ser usando Classe/ClasseDao/ClasseControl/JSF/richfaces/BD.

Grato!!!

Cenário

-------------- Classe Cliente -----------------

package exercicios;

import java.util.Date;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Temporal;

import javax.persistence.TemporalType;

@Entity //ela vai referenciar a tabela do banco e cria-la;
public class Cliente {

@Id //chave primaria
@GeneratedValue //gera o id sequencial
private int id;

private String nome;

public int getId() {

return id;

}
public void setId(int id) {

this.id = id;

}
public String getNome() {

return nome;

}
public void setNome(String nome) {

this.nome = nome;

}

}

-------------- Classe ClienteDao -----------------

//Inseri Altera e Exluir o Cliente
package exercicios;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

public class ClienteDao {

//EntityManager //É O CARA DO BANCO EXCLUI ALTERA E CONSULTA

private EntityManager em = Conexao.getEntityManager();

//Consultar pelo ID

public Cliente consultar(int id) {

return em.find(Cliente.class, id);

}

//OU SEGUNDA OPÇÃO DE CONSULTA PARA ALIMENTAR O “h:selectOneMenu” “h:selectOneMenu”

//Consultar todos o clientes

public List consultar() {

Query query = em.createNativeQuery(select * from cliente, Cliente.class);

return query.getResultList();

}

//OU Terceira OPÇÃO DE CONSULTA PARA ALIMENTAR O “h:selectOneMenu” “h:selectOneMenu”

//Consultar pelo nome

public List consultar(String nome) {

//Query da persistencia sempre

Query query = em.createNativeQuery("select * from cliente " +upper(nome) like upper(:nome), Cliente.class);

query.setParameter(nome, “%” + nome + “%”);

return query.getResultList();

}

}

-------------- Classe ClientControl -----------------

//é o mesmo do manage bean(faces-config)
package exercicios;

import java.util.ArrayList;
import java.util.List;

public class ClienteControl {

private ClienteDao clienteDao = new ClienteDao();

private Cliente cliente = new Cliente();

private List clientes = new ArrayList();

public String listar() {

clientes = clienteDao.consultar();

return null;

}

public Cliente getCliente() {

return cliente;

}

public void setcliente(Cliente cliente) {

this.cliente = cliente;

}

public List getClientes() {

return clientes;

}

public void setCliente(List clientes) {

this.clientes = clientes;

}

}

-------------- cliente.jsp -----------------

<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1” pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core”%>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html”%>

<%@ taglib uri=“http://richfaces.org/a4j” prefix=“a4j”%>
<%@ taglib uri=“http://richfaces.org/rich” prefix=“rich”%>

“h:form”
“rich:panel”

"h:panelGrid columns=“2"”

“h:selectOneMenu value=”#{clienteControl.Listar()}" "
“f:selectItem itemLabel=“Selecione” itemValue=”"/"
“a4j:support event=“onchange” reRender=“clientes””"/a4j:support"

“/h:panelGrid”

“/rich:panel”

“rich:dataTable value=”#{clienteControl.cliente }" var=“cli” width=“100%”"
“f:facet name=“header”>
“h:outputText value=“Clientes”””/h:outputText"
“/f:facet”
“rich:column”
“h:outputText value=”#{cli.profissao }"""/h:outputText"
“/rich:column”

“rich:column”
“h:outputText value=”#{cli.idade }"""/h:outputText"
“/rich:column”

“/rich:dataTable”

6 Respostas

delki8

Daniel sugiro fortemente que você de uma lida neste tópico aqui antes de postar no fórum, só pra padronizar e organizar melhor as coisas:
http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

D

ok valeu!!!
vou fazer isto agora!

Mas vc pode me ajudar diante do que tem acima??? (hehehehe)

Desde já agradeço!!

alexvingg

Fica complicado ver seu código dessa maneira.

D
-------------- Classe Cliente -----------------

package exercicios;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity  //ela vai referenciar a tabela do banco e cria-la;
public class Cliente {

	@Id //chave primaria
	@GeneratedValue //gera o id sequencial
	private int id;
	
	private String nome;



	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

}


-------------- Classe ClienteDao -----------------

//Inseri Altera e Exluir o Cliente
package exercicios;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

public class ClienteDao {

	 //EntityManager //É O CARA DO BANCO EXCLUI ALTERA E CONSULTA
	
	private EntityManager em = Conexao.getEntityManager();


	//Consultar pelo ID
	public Cliente consultar(int id) {
		return em.find(Cliente.class, id);
	}

//OU SEGUNDA OPÇÃO DE CONSULTA PARA ALIMENTAR O "h:selectOneMenu" "h:selectOneMenu"


	//Consultar todos o clientes
	public List<Cliente> consultar() {
		Query query = em.createNativeQuery("select * from cliente", Cliente.class);
		return query.getResultList();
	}

//OU Terceira OPÇÃO DE CONSULTA PARA ALIMENTAR O "h:selectOneMenu" "h:selectOneMenu"
	
	//Consultar pelo nome
	public List<Cliente> consultar(String nome) {
//Query da persistencia sempre
		Query query = em.createNativeQuery("select * from cliente " +
				"upper(nome) like upper(:nome)", Cliente.class);
		query.setParameter("nome", "%" + nome + "%");
			return query.getResultList();
	}
}




-------------- Classe ClientControl -----------------


//é o mesmo do manage bean(faces-config)
package exercicios;

import java.util.ArrayList;
import java.util.List;

public class ClienteControl {

	private ClienteDao clienteDao = new ClienteDao();
	
	private Cliente cliente = new Cliente();
	
	private List<Cliente> clientes = new ArrayList<Clientes>();
	
	public String listar() {
		clientes = clienteDao.consultar();
		return null;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setcliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public List<Cliente> getClientes() {
		return clientes;
	}
	public void setCliente(List<Cliente> clientes) {
		this.clientes = clientes;
	}
}







-------------- cliente.jsp -----------------


<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>

<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>


<h:form>
	<rich:panel>

		<h:panelGrid columns="2">
	
			
			<h:selectOneMenu  value="#{clienteControl.Listar()}" >
						<f:selectItem itemLabel="Selecione" itemValue=""/>
					<a4j:support event="onchange" reRender="clientes"></a4j:support>
				</h:selectOneMenu>
				
				
		</h:panelGrid>

	</rich:panel>
	
	<rich:dataTable value="#{clienteControl.cliente }" var="cli" width="100%">
		<f:facet name="header">
			<h:outputText value="Clientes"></h:outputText>
		</f:facet>
		<rich:column>
			<h:outputText value="#{cli.profissao }"></h:outputText>
		</rich:column>


		<rich:column>
			<h:outputText value="#{cli.idade }"></h:outputText>
		</rich:column>


	</rich:dataTable>
	
	<h:form>

Tá ae galera, valeu por mais esta dica.

Desde já agradeço

nel

Oi!

Tem erros ai:

  • Cadê o id “clientes” que você usa no seu a4j ?
  • o método listar é listar e não Listar
  • nunca vai conseguir preencher um datatable assim, está apontado para um objeto “#{clienteControl.cliente}”, seria para a lista, não? Ou seja:
"#{clienteControl.clientes}"

E se ainda não funcionar, sugiro adicionar um método listener no seu a4j:support e tratar o evento dentro do Bean, assim, podes preencher o que quiseres da forma como quiseres :slight_smile:

Abraços.

M

Cara, vc tenta carregar no grid um "cli.profissao" e "cli.idade", porem a sua entidade não tem profissao nem idade.

tenta assim:

package exercicios;   
  
import java.util.Date;   
  
import javax.persistence.Entity;   
import javax.persistence.GeneratedValue;   
import javax.persistence.Id;   
import javax.persistence.Temporal;   
import javax.persistence.TemporalType;   
  
@Entity  //ela vai referenciar a tabela do banco e cria-la;   
public class Cliente {   
  
    @Id //chave primaria   
    @GeneratedValue //gera o id sequencial   
    private int id;   
       
    private String nome;   
  
    private String profissao;

    private int idade;
  
   public int getIdade(){
     return idade;
   }

       public void setIdade(int idade) {   
        this.idade = idade;   
    }   

    public int getId() {   
        return id;   
    }   
  
    public void setId(int id) {   
        this.id = id;   
    }   
  
    public String getNome() {   
        return nome;   
    }   
  
    public void setNome(String nome) {   
        this.nome = nome;   
    }   
    
    public String getProfissao() {   
        return profissao;   
    }   
  
    public void setProfissao(String profissao) {   
        this.profissao = profissao;   
    }   

  
}

assim voce pode usar o get de idade e profissao

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>   
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>   
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>   
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>   
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>   
  
  
<h:form>   
    <rich:panel>   
  
        <h:panelGrid columns="2">   
       
               
            <h:selectOneMenu  value="#{clienteControl.listar}" >   
                        <f:selectItem itemLabel="Selecione" itemValue=""/>
                    <a4j:support event="onchange" reRender="clientes"/>   
            </h:selectOneMenu>   
                   
        </h:panelGrid>   
  
    </rich:panel>   
       
    <rich:dataTable value="#{clienteControl.clientes}" var="cliente" width="100%">   
        
        <f:facet name="header">   
            <h:outputText value="Clientes"/>   
        </f:facet>  
 
        <rich:column>   
            <h:outputText value="#{cliente.profissao}"/>   
        </rich:column>   

        <rich:column>   
            <h:outputText value="#{cliente.idade}"/>   
        </rich:column>   
  
    </rich:dataTable>   
       
    <h:form>

Assim vai carregar =D

Criado 11 de agosto de 2011
Ultima resposta 12 de ago. de 2011
Respostas 6
Participantes 5