Pessoal estou tentando configurar o validator do vraptor mais não estou conseguindo aparece o erro abaixo :
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)
net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)
net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:215)
net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
br.com.caelum.vraptor.proxy.AbstractCglibProxifier.enhanceTypeWithCGLib(AbstractCglibProxifier.java:46)
br.com.caelum.vraptor.proxy.ObjenesisProxifier.proxify(ObjenesisProxifier.java:31)
br.com.caelum.vraptor.view.DefaultValidationViewsFactory.instanceFor(DefaultValidationViewsFactory.java:65)
br.com.caelum.vraptor.validator.DefaultValidator.onErrorUse(DefaultValidator.java:86)
br.com.caelum.vraptor.validator.AbstractValidator.onErrorUsePageOf(AbstractValidator.java:55)
br.com.AromaNaWeb.controller.ProdutosController.adiciona(ProdutosController.java:53)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
Se alguem puder me ajudar o erro acontece quando tento cadastrar um produto invalido de acordo com os criterios que especifiquei no controle mas so que nao aparece o erro aparece esta exception , e tambem não estou conseguindo usar o redirecionamento do vraptor para outra pagina por exemplo :
validator.onErrorUsePageOf(ProdutosController.class).adiciona(produto);
result.redirectTo(ProdutosController.class).lista();
Qualquer coisa eu envio o arquivo war por email se ficar mais facil pois o arquivo tem 16 mb e aqui so permiti 1 mb , mas entao estou no aguardo de ajuda …
Guevara
Novembro 1, 2010, 5:20pm
#2
Poste o método completo pra ver melhor onde está o problema.
[]s
Está é a classe de controle do produto .
[code]
package br.com.AromaNaWeb.controller;
//import?s
import br.com.AromaNaWeb.dao.*;
import br.com.AromaNaWeb.modelo.Produto;
import br.com.caelum.vraptor.Validator;
import java.util.List;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.validator.ValidationMessage;
@Resource
public class ProdutosController {
private final ProdutoDao dao;
private Validator validator;
public ProdutosController(ProdutoDao dao, Result result, Validator validator) {
this.dao = dao;
this.validator = validator;
}
public List lista() {
return dao.listaTudo();
}
public void adiciona(final Produto produto) {
// ESTÁ DANDO ERRO NESTA PARTE
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 que 40 letras",
"produto.descricao"));
}
if (produto.getPreco() <= 0) {
validator.add(new ValidationMessage(
"Preço precisa ser positivo", "produto.preco"));
}
validator.onErrorUsePageOf(ProdutosController.class).adiciona(produto);
dao.salva(produto);
//verificar por que o redirectTo abaixo não funciona .
//result.redirectTo(ProdutosController.class).lista();
}
public void formulario() {
}
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);
}
}[/code]
O validator está sendo inplementado no metodo adicionar .
Guevara
Novembro 1, 2010, 6:46pm
#4
Tenta assim:
public void adiciona(final Produto produto) {
validator.checking(new Validations() {
{
that(!produto.getDescricao().isEmpty(), "produto.descricao",
"descricaoProduto.obrigatorio");
that(!produto.getDescricao().length() > 40), "produto.descricaoTamanho",
"descricaoTamanhoProduto.obrigatorio");
that(!produto.getPreco() <= 0, "produto.precoInvalido",
"precoProduto.invalido");
that(produto.getPreco() != null, "produto.preco",
"precoProduto.obrigatorio");
}
});
validator.onErrorRedirectTo(this).adiciona(produto);
dao.salva(produto);
result.use(Results.logic()).redirectTo(ProdutoController.class).lista();
}
E lá no seu messages.properties adiciona as mensagens de erro pro usuario ver na jsp:
descricaoProduto.obrigatorio = Informe a descrição do produto
descricaoTamanhoProduto.obrigatorio = Informe uma descrição com menos de 40 caracteres
precoProduto.invalido = Preço deve ser maior que zero
precoProduto.obrigatorio = Informe um preço para o produto
Abraço!
onde coloco este arquivo message.propeties ? :oops:
Guevara
Novembro 1, 2010, 6:53pm
#6
Coloca na sua /src, o nome é “messages.properties”.
o eclipse esta apresentando um erro de configuração de build path…
Guevara
Novembro 1, 2010, 7:18pm
#8
Que erro é esse? Vc colocou todos os jars necessários na sua /lib?
sim coloquei, o erro que tá acontecendo é
“the type org.hamcrest.Matcher cannot be resolved. it s indiretly referenced from requerid .class file”
Guevara
Novembro 1, 2010, 7:39pm
#10
Vc possui o hamcrest-all-1.3RC0.jar na sua /lib? Se não tiver, vá na pasta do VRaptor que vc baixou e veja se está na pasta “optional”, se não estiver lá, baixa da internet esse jar e coloque na /lib:
https://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-all-1.3RC0.jar&can=2&q=
Dê um “refresh” no seu projeto, depois tente novamente.
ok tentei os erros foram corrigidos o projeto foi compilado mais na hora de executar lança essa exception abaixo :
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause
java.lang.NullPointerException
br.com.AromaNaWeb.controller.ProdutosController.adiciona(ProdutosController.java:41)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.
aparentemente é de objeto nulo mas eu não consigo resolver …
Guevara
Novembro 1, 2010, 8:20pm
#12
No editor do Eclipse, habilite o “show line numbers”, e poste a linha 41 do seu ProdutoController:
Veja tb como vc está mandando os parâmetros na JSP, poste o seu form tb, está chegando null lá.
o erro está neste trecho
validator.checking( new Validations()
A classe toda e essa ai o metodo adiciona verifica e grava as informações mas quem chama o formulario é o metodo formulario , lembrando que não estou tambem conseguindo redirecionar de uma jsp para outra
package br.com.AromaNaWeb.controller;
//import?s
import br.com.AromaNaWeb.dao.*;
import br.com.AromaNaWeb.modelo.Produto;
import br.com.caelum.vraptor.Validator;
import java.util.List;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.validator.ValidationMessage;
import br.com.caelum.vraptor.validator.Validations;
import br.com.caelum.vraptor.view.Results;
@Resource
public class ProdutosController {
private final ProdutoDao dao;
private Validator validator ;
private Result result;
public ProdutosController(ProdutoDao dao, Result result) {
this.dao = dao;
this.validator = validator;
}
public List<Produto> lista() {
return dao.listaTudo();
}
//verificar por que o redirectTo abaixo não funciona .
//result.redirectTo(ProdutosController.class).lista();
public void adiciona(final Produto produto) {
validator.checking( new Validations() {
{that(!produto.getDescricao().isEmpty(), "produto.descricao",
"descricaoProduto.obrigatorio");
that(!(produto.getDescricao().length() > 40), "produto.descricaoTamanho",
"descricaoTamanhoProduto.obrigatorio");
that(!(produto.getPreco() <= 0), "produto.precoInvalido",
"precoProduto.invalido");
that(produto.getPreco() != null, "produto.preco",
"precoProduto.obrigatorio");
}
});
validator.onErrorRedirectTo(this).adiciona(produto);
dao.salva(produto);
result.use(Results.logic()).redirectTo(ProdutosController.class).lista();
}
public void formulario() {
}
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);
}
e segue o form abaixo :
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="adiciona">
<fieldset>
<legend>Adicionar Produto</legend>
<label for="nome">Nome:</label>
<input id="nome" type="text" name="produto.nome" value="${produto.nome }"/>
<label for="descricao">Descrição:</label>
<textarea id="descricao" name="produto.descricao">${produto.descricao }</textarea>
<label for="preco">Preço:</label>
<input id="preco" type="text" name="produto.preco" value="${produto.preco }"/>
<button type="submit">Enviar</button>
</fieldset>
</form>
</body>
</html>
é isso ai se vc quiser envio o war com o projeto completo para vc por email .
Guevara
Novembro 1, 2010, 8:43pm
#14
Cometi um erro, no seu método adiciona em caso de erro têm que voltar pro formulário e não o próprio método:
validator.onErrorRedirectTo(this).formulario();
No browser vc chama o formulario assim:
http://localhost:8080/aromanaweb/produtos/formulario
Ou se colocou com Maiúsculas no começo:
http://localhost:8080/AromaNaWeb/produtos/formulario
Sendo que o certo seria td minúsculo.
Se ele conseguir adicionar o produto vai pro método lista(), deixe assim:
public void lista() {
result.include("produtos", dao.listaTudo());
}
agora ta aparecendo o mesmo erro mas so que referencia as linhas 47 e 42
at br.com.AromaNaWeb.controller.ProdutosController$1.<init>(ProdutosController.java:47)
at br.com.AromaNaWeb.controller.ProdutosController.adiciona(ProdutosController.java:42)
que são respectivamente :
// este é o erro 47
that(!(produto.getPreco() <= 0), "produto.precoInvalido",
"precoProduto.invalido");
// e este é o erro 42
validator.checking( new Validations() {
Segue resultado .
Guevara
Novembro 1, 2010, 8:58pm
#16
O atributo preço deve ser do tipo BigDecimal na classe Produto.
agora restou o da linha 42 ta apontando para está linha .
validator.checking( new Validations() {
este é a exception completa
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause
java.lang.NullPointerException
br.com.AromaNaWeb.controller.ProdutosController.adiciona(ProdutosController.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.
--------------------------------------------------------------------------------
Guevara
Novembro 1, 2010, 9:13pm
#18
Se o seu preço é BigDecimal, tente fazer a verificação assim:
that(!(produto.getPreco().compareTo(BigDecimal.ZERO) <= 0, "produto.precoInvalido", "precoProduto.invalido");
infelismente continua dando o erro no trecho abaixo
validator.checking(new Validations() {
vc tem gmail para eu te enviar o projeto completo para vc ver para mim ? pois o projeto tem 16 mb.
Guevara
Novembro 1, 2010, 9:54pm
#20
Infelizmente não é possível por email, use o fórum para obter ajuda.
Confira se o seu método está assim.
public void adiciona(final Produto produto) {
validator.checking(new Validations() {
{
that(!produto.getDescricao().isEmpty(), "produto.descricao","descricaoProduto.obrigatorio");
that(!produto.getDescricao().length() > 40), "produto.descricaoTamanho", "descricaoTamanhoProduto.obrigatorio");
that(!(produto.getPreco().compareTo(BigDecimal.ZERO) <= 0, "produto.precoInvalido", "precoProduto.invalido");
that(produto.getPreco() != null, "produto.preco", "precoProduto.obrigatorio");
}
});
validator.onErrorRedirectTo(this).formulario();
dao.salva(produto);
result.use(Results.logic()).redirectTo(ProdutoController.class).lista();
}
Pare o server Tomcat, clique com o direito no server e dê um “clean”, depois dê um start do Tomcat novamente