| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 15:17:45
|
Lita Mclean
JavaChild
![[Avatar]](/images/avatar/905d9069a054638f04a6f61c6c484187.jpg)
Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline
|
galera criei uma classe conforme a apostila do caleum fj-28, com o método:
public void adiciona(final Produto produto){
if(produto.getNome()==null||produto.getNome().length()<3){
validator.add(new ValidationMessage("Nome é obrigatório e precisa ter mais de 3 letras","produto.nome"));
}
if(produto.getDescricao()==null||produto.getDescricao().length()>40){
validator.add(new ValidationMessage("Descrição é obrigatória não pode ter mais de 40 letras","produto.descricao"));
}
if(produto.getPreco()<=0){
validator.add(new ValidationMessage("Preço precisa ser positivo","produto.preco"));
}
validator.onErrorUse(page()).of(ProdutosController.class).formulario();
dao.salva(produto);
result.redirectTo(ProdutosController.class).lista();
}
caso a pessoa não digitasse nada(ou algum valor incorreto) era para aparecer uma mensagem de erro, coisa que não esta fazendo,aparece o erro:
Caused by: java.lang.NullPointerException
at br.com.caelum.goodbuy.controller.ProdutosController.adiciona(ProdutosController.java:37)
obs; eu acho que o erro esta vindo do método adiciona,não tenho certeza
alguém saberia me dizer o motivo do erro???
obrigada!
This message was edited 1 time. Last update was at 22/02/2010 16:37:46
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 15:24:43
|
Lita Mclean
JavaChild
![[Avatar]](/images/avatar/905d9069a054638f04a6f61c6c484187.jpg)
Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline
|
ah esqueci de informar no header.jspf que fica na pasta webContent, coloquei a seguinte informação:
<div id="erros">
<ul>
<c:forEach items="${errors}" var="error">
<li>${error.category}-${error.message}</li>
</c:forEach>
</ul>
</div>
mas acho que o header.jspf esta no local errado por que, seguindo a postila fala para colocar :
<div id="body">
<div id="menu">
<ul>
<li><a href="<c:url value="/produtos/formulario"/>">Novo Produto</a></li>
<li><a href="<c:url value="/produtos/lista"/>">Lista Produtos</a></li>
</ul>
</div>
dentro do header.jspf e o certo era aparecer Novo produto e Lista de produtos...na web mas não esta aparecendo
alguém tem alguma dica?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 15:55:43
|
henriquejhc
JavaEvangelist
Membro desde: 19/02/2009 20:34:47
Mensagens: 308
Offline
|
Oi, posso estar errado mas nessa linha :
Você verifica se é igual a null e depois tenta verificar o tamanho.
Se for null vai NullPointerException.
(Não testei, logo não posso afirmar que seja isso)
Espero ter ajudado.
|
Não foram os pregos que seguraram CRISTO na cruz, mas o AMOR Dele por você e por mim. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 15:59:57
|
Lita Mclean
JavaChild
![[Avatar]](/images/avatar/905d9069a054638f04a6f61c6c484187.jpg)
Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline
|
desculpa mas não entendi exatamente o que vc quis dizer?!!!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:04:39
|
henriquejhc
JavaEvangelist
Membro desde: 19/02/2009 20:34:47
Mensagens: 308
Offline
|
Se o seu atributo nome for null você não pode verficar o tamanho, porque ele não existe.
Acho que primeiro você deveria verificar se é diferente de null. Se for diferente de null dai sim você verifica o tamanho.
Espero ter ajudado.
|
Não foram os pregos que seguraram CRISTO na cruz, mas o AMOR Dele por você e por mim. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:19:12
|
Lita Mclean
JavaChild
![[Avatar]](/images/avatar/905d9069a054638f04a6f61c6c484187.jpg)
Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline
|
então tentei fazer isso que vc disse, mas continua dando erro:
br.com.caelum.vraptor.InterceptionException: java.lang.NullPointerException
.
.
.
java.lang.NullPointerException
br.com.caelum.goodbuy.controller.ProdutosController.adiciona(ProdutosController.java:37)
ProdutosController.java:37 seria essa linha no meu código:
validator.onErrorUse(page()).of(ProdutosController.class).formulario();
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:32:17
|
zoren
GUJ Master
![[Avatar]](/images/avatar/9efbafef9f85fd9caa789941a4cdf821.jpg)
Membro desde: 30/06/2008 08:32:33
Mensagens: 1007
Offline
|
vc injetou o validator no seu controller?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:34:35
|
Lita Mclean
JavaChild
![[Avatar]](/images/avatar/905d9069a054638f04a6f61c6c484187.jpg)
Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline
|
"injetou"???...desculpa mas como assim?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:38:13
|
zoren
GUJ Master
![[Avatar]](/images/avatar/9efbafef9f85fd9caa789941a4cdf821.jpg)
Membro desde: 30/06/2008 08:32:33
Mensagens: 1007
Offline
|
o vraptor faz injeção de dependência pelo construtor
então é só vc informar que vai receber o validator no seu construtor
vc colocou o validator no seu construtor??
coloca o controller inteiro aqui, mas dentro das tags code
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:40:36
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
quando vc não passa nenhuma informação do produto na requisição (não preencheu o formulário, por exemplo), o vraptor vai passar um produto nulo no seu método:
pra corrigir é só fazer:
PS: Lita, coloque os códigos que vc postar entre [code] e [/ code] (sem o espaço dentro da tag), assim fica mais fácil de ler
This message was edited 1 time. Last update was at 18/02/2010 16:41:47
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:43:54
|
Lita Mclean
JavaChild
![[Avatar]](/images/avatar/905d9069a054638f04a6f61c6c484187.jpg)
Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline
|
@Resource
public class ProdutosController {
private final ProdutoDao dao;
private final Result result;
private final Validator validator;
public ProdutosController(ProdutoDao dao, Result result, Validator validator){
this.dao=dao;
this.result=result;
this.validator=validator;
}
public void adiciona(final Produto produto){
if(produto.getNome()==null||produto.getNome().length()<3){
validator.add(new ValidationMessage("Nome é obrigatório e precisa ter mais de 3 letras","produto.nome"));
}
if(produto.getDescricao()==null||produto.getDescricao().length()>40){
validator.add(new ValidationMessage("Descrição é obrigatória não pode ter mais de 40 letras","produto.descricao"));
}
if(produto.getPreco()<=0){
validator.add(new ValidationMessage("Preço precisa ser positivo","produto.preco"));
}
validator.onErrorUse(page()).of(ProdutosController.class).formulario();
dao.salva(produto);
result.redirectTo(ProdutosController.class).lista();
}
public void formulario(){
}
public List<Produto> lista(){
return dao.listaTudo();
}
public Produto edita(Long id){
return dao.carrega(id);
}
public void altera(Produto produto){
dao.atualiza(produto);
result.redirectTo(ProdutosController.class).lista();
}
public void remove(Long id){
Produto produto=dao.carrega(id);
dao.remove(produto);
result.redirectTo(ProdutosController.class).lista();
}
}
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:56:25
|
zoren
GUJ Master
![[Avatar]](/images/avatar/9efbafef9f85fd9caa789941a4cdf821.jpg)
Membro desde: 30/06/2008 08:32:33
Mensagens: 1007
Offline
|
Tira o modificador final dos atributos da classe
do validator, result e do DAO
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 17:04:48
|
Lita Mclean
JavaChild
![[Avatar]](/images/avatar/905d9069a054638f04a6f61c6c484187.jpg)
Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline
|
tirei os modificadores mas continua dando erro :
br.com.caelum.vraptor.InterceptionException: java.lang.NoClassDefFoundError: net/vidageek/mirror/dsl/Mirror
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 17:08:04
|
zoren
GUJ Master
![[Avatar]](/images/avatar/9efbafef9f85fd9caa789941a4cdf821.jpg)
Membro desde: 30/06/2008 08:32:33
Mensagens: 1007
Offline
|
Agora vc tem q colocar no seu classpath o jar do Mirror
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 17:15:11
|
Lita Mclean
JavaChild
![[Avatar]](/images/avatar/905d9069a054638f04a6f61c6c484187.jpg)
Membro desde: 11/12/2009 10:55:58
Mensagens: 143
Offline
|
zoren add....agora não dá erro...mas também não aparece a mensagem de erro só continua na mesma página!!!
|
|
|
 |
|
|