Dúvida em combo JSP + Action Struts2

3 respostas
N

Olá pessoal, sou novato por aqui. Meu nome é Nesken e concluí recentemente um curso de java direcionado pra parte web que é onde eu gosto e quero aprender cada vez mais.

Ja estou implementando alguns projetos como cadastro de clientes e relatorios. Porem "parei" em um relatorio em especifico.

Populei uma combo na minha jsp. ela mostra os modelos de veiculos para o usuario escolher. Funciona perfeitamente. A combo é essa:

<select name="codProduto">
	<option selected="selected">Selecione</option>
	<c:forEach items="${veiculos}" var="veiculo">
	<option values="${veiculo.codProduto}">${veiculo.produto}</option>
	</c:forEach>
</select>

porem estou com um erro de Null Pointer Exception quando clico em pesquisar. Eu preciso pegar o codProduto dessa combo para listar meus clientes.. Debuguei e vi que minha Action nao consegue pegar o codProduto do JSP e passar para o DAO.. está nulo.

Minha Action atualmente está assim.. mas ja tentei de varias maneiras..

private List<Cliente> clientes;
private Veiculo codProduto;
	@Action(value="PesquisaClientesPorModelo", results={
			@Result(name="ok", location="/lista-clientes.jsp"),
			@Result(name="erro", location="/erro.jsp")
	})
	public String execute(){
		try {
			this.clientes = new ClientesDAO().recuperaClientesPorModelo(codProduto);
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("Erro ao recuperar a lista de clientes"+e.getMessage());
			return "erro";
		}
		return "ok";
		
	}

Parte do meu DAO onde monto a query:

public List<Cliente> recuperaClientesPorModelo(Veiculo codProduto) throws SQLException{
String sql = "select c.cod_cliente,c.nome,c.telefone_res,c.telefone_com,c.telefone_cel,c.email_nfe from clientes c, veiculos v where v.cod_cliente=c.cod_cliente and v.cod_cliente<>'08933512000112' and v.status='V' and cod_produto="+codProduto.getCodProduto()+" group by c.nome,c.telefone_res,c.telefone_com,c.telefone_cel,c.email_nfe,c.cod_cliente order by nome";

Pode ser besteira.. mas a resoluçao do problema sumiu da minha cabeça rsrssr.. agradeço antecipadamente por qualquer ajuda.

3 Respostas

paulo1911

Olá amigo, bem na minha opinião está confuso seu dao pois vc tem um Objeto do tipo veiculo com nome codProduto e na quary SQL vc chama um codProduto.getCodProduto()
Ficou confuso isso.

Mas coloque um break point na linha do dao e veja se a query retorna algo…

fallow

N

Este foi meu ultimo teste

Mudei a variavel na Action codProduto para o tipo String e alterei o DAO tambem.. eu recebo o veiculo.produto da jsp... e nao o veiculo.codProduto... estou desvendando aos poucos.. logo o problema agora está na select da JSP eu acho

agora está assim:

JSP:
<select name="idProduto">
		<option selected="selected">Selecione</option>
		<c:forEach items="${veiculos}" var="veiculo">
			<option values="${veiculo.codProduto}">${veiculo.produto}</option>
		</c:forEach>
	</select><br><br>
Action:
public class PesquisaClientesPorModeloAction {
	private List<Cliente> clientes;
	private String idProduto;
	@Action(value="PesquisaClientesPorModelo", results={
			@Result(name="ok", location="/lista-clientes.jsp"),
			@Result(name="erro", location="/erro.jsp")
	})
	public String execute(){
		try {
			this.clientes = new ClientesDAO().recuperaClientesPorModelo(idProduto);
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("Erro ao recuperar a lista de clientes"+e.getMessage());
			return "erro";
		}
		return "ok";
		
	}
DAO:
public List<Cliente> recuperaClientesPorModelo(String idProduto) throws SQLException{
		String sql = "select c.cod_cliente,c.nome,c.telefone_res,c.telefone_com,c.telefone_cel,c.email_nfe from clientes c, veiculos v where v.cod_cliente=c.cod_cliente and v.cod_cliente<>'08933512000112' and v.status='V' and cod_produto="+idProduto+" group by c.nome,c.telefone_res,c.telefone_com,c.telefone_cel,c.email_nfe,c.cod_cliente order by nome";

nao está mais com nullpointer somente dá erro porque o DAO nao é executado.. ja que o valor que a Action está recebendo é a descriçao.. não codigo

N

Alguma sugestão?

Criado 14 de setembro de 2011
Ultima resposta 16 de set. de 2011
Respostas 3
Participantes 2