Havia criado um post anterior sobre esse assunto mas está travando o navegador ao abrir a mensagem. Então decidi criar outro. O problema é o seguinte. Praticamente toda vez que tento persistir um objeto no banco o vraptor me mostra o seguinte erro no servidor:
pode ser um erro de conversão, tipo uma letra num campo que só aceita número… verifique na requisição se não tem algum parâmetro mandando valor inválido
anderson_lr
Estou dando um post via ajax com jquery. Também coloquei um breakpoint no meu controller pra verificar se a entidade está com os atributos setados corretamente e está tudo certo. Percebi um coisa interessante. Quando eu faço logout no sistema e logo novamente eu consigo cadastrar umas três vezes e o erro começa novamente. Aí eu logo denovo e volta… Quanto o usuário faz login eu adiciono ele uma uma variável de sessão:
Aí então eu criei um interceptor pra verificar se o usuário está tem permissão pra cada lógica que ele executa:
@Component@InterceptspublicclassUsuarioInterceptorimplementsInterceptor{privateDaoFactorydaoFactory;privateEscopoDeSessaoescopoDeSessao;privateResultresult;publicUsuarioInterceptor(DaoFactorydaoFactory,EscopoDeSessaoescopoDeSessao,Resultresult){this.escopoDeSessao=escopoDeSessao;this.daoFactory=daoFactory;this.result=result;}publicbooleanaccepts(ResourceMethodmethod){StringdescricaoLogica=method.getMethod().getName();if(descricaoLogica.equals("login")||descricaoLogica.equals("logout")||descricaoLogica.equals("lerMensagem")){returnfalse;}else{returntrue;}}publicvoidintercept(InterceptorStackstack,ResourceMethodmethod,ObjectresourceInstance)throwsInterceptionException{StringdescricaoController=method.getResource().getType().getSimpleName();StringdescricaoLogica=method.getMethod().getName();/* * Se o usuario ainda nao esta logado, interrompe */if(escopoDeSessao.getUsuario()==null){/* * Opa! Usuário não fez login ainda! */Exceptionerro=newException("Atenção! Você não pode disparar eventos no sistema sem estar autenticado.");result.include("erro",erro);result.forwardTo(UsuarioController.class).formularioLogin();}/* * Verifica a permissão do usuario para execução da logica */if(daoFactory.getLogicaDoUsuarioDao().logicaPermitida(descricaoController,descricaoLogica,escopoDeSessao.getUsuario())){/* * Ultimo Controller e Lógica acessados pelo Usuário, para serem colocados no monitor de sessão. */escopoDeSessao.setUltimoControllerLogica(descricaoController+"."+descricaoLogica);stack.next(method,resourceInstance);}else{result.include("titulo","Falta de Permissão.");result.include("mensagem","Você não esta autorizado a executar esta ação: { Controller: [ "+descricaoController+" ] - Lógica: [ "+descricaoLogica+" ] }.");result.forwardTo("/mensagemGenerica.jsp");}}}
Será que pode ser problema com validação de usuário?
Lucas_Cavalcanti
faz o seguinte, coloca no controller, na primeira linha da lógica com erro: