setAtribute não funciona

9 respostas
mauricioadl

Pessoal tenho uma servlet onde eu coloco alguns atributos pelo set atribute e dou um forward com RequestDispacher para uma jsp so que essa jsp. so q os atributos nunca chegam na jsp sempre estao null.

tanto o getParameter qnto o getAtribute retorna null.

alguem sabe porq?

9 Respostas

leocantanhede

Posta o código do servlet e do jsp de destino para que eu possa dar uma olhada e ver a origem do problema.

mauricioadl

ta +ou- assim:

doPost(…){
request.setAtribute(“erro”,“mensagem de erro”);

RequestDispacher rd = request.getReq…(“pagina.jsp”).forward(request, response);
}

no jsp
<%= request.getParameter("erro) %>

nao da pra colocar o codigo real aqui por causa do sistema de seguranca da empresa. entao fiz esse esboço ae.

vlw

mauricioadl

outra coisa, se na hora do forward eu colocar o nome do jsp seguido de ?erro=mensagem_de_erro funciona perfeitamente.

leocantanhede

request.setAttribute funciona com o esquema de chave + valor, onde a chave seria o apelido que você dá ao objeto e valor seria o objeto.

Exemplo:

ContaCorrente cc = new ContaCorrente();
cc.setNumero = "454-5";
cc.setTitular = "Leonardo Cantanhêde";

request.setAttribute("conta", cc);

Recuperando o objeto no jsp:

ContaCorrente cc = (ContaCorrente)request.getAttribute("cc");
mauricioadl
leocantanhede:
request.setAttribute funciona com o esquema de chave + valor, onde a chave seria o apelido que você dá ao objeto e valor seria o objeto.

Exemplo:

ContaCorrente cc = new ContaCorrente();
cc.setNumero = "454-5";
cc.setTitular = "Leonardo Cantanhêde";

request.setAttribute("conta", cc);

Recuperando o objeto no jsp:

ContaCorrente cc = (ContaCorrente)request.getAttribute("cc");

o problema esta ae, qndo recupero com getAtribute ou getParameter ele retorna null, ou seja, o objeto nao esta sendo guardado no contexto, so nao sei prq.

leocantanhede

Pelo fragmento de código que você postou acima, mensagem de erro não é um objeto, o que eu quiz dizer é que por exemplo crie uma variável String e atribua o valor “mensagem de erro” a ela, assim você conseguirá recuperá-la na seu jsp

mauricioadl

entedi, vou testar aqui.

sabe me dizer ql eh a diferenca de passar uma string direto e de criar um objeto e depois passar? me parece a mesma coisa.

leocantanhede

Java é uma liguagem fortemente tipada, ele só ira interpretar uma variável ou objeto se você os declarar antes, “mensagem de erro” não é uma varíavel se você não atribuir um tipo a ela:

Interpretado:

String erro = "mensagem de erro";

Não intepretado, e gera erro

erro = "mensagem de erro";
mauricioadl

testei do jeito q vc falou e nao funcionou.

Criado 12 de janeiro de 2012
Ultima resposta 13 de jan. de 2012
Respostas 9
Participantes 2