VRaptor criar Interceptor que faça Result.include antes de renderizar a pagina

53 respostas
R

Bom dia,

eu preciso Executar alguns Resul.include, adicionando alguns parametros mas isso tem que ser feito, DEPOIS de executar o método, porém ANTES de iniciar a renderização do JSP.

Eu fiz assim mas parece não ter funcionado.

@Intercepts(after=ExecuteMethodInterceptor.class, before=ForwardToDefaultViewInterceptor.class)
public class MeuInterceptor implements Interceptor{
	private final HttpServletRequest req;
	private final Result result;
	
	public ClassScopeInterceptor(HttpServletRequest req, Result result) {
		this.req = req;
		this.result = result;
	}

	@Override
	public boolean accepts(ResourceMethod arg0) {
		return true;
	}

	@Override
	public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException {
		stack.next(method, instance);
		
		result.include("VA", "1");
		result.include("VB", "2");
	}
}

Existe alguma forma de fazer isso, mesmo que seja sem Interceptors. O que eu quero é basicamente a mesma coisa que executar o Result.include no final do método. Mas eu preciso que isso seja default por isso eu preciso de algum interceptor.

53 Respostas

R

acho que se vc colocar esses parametros em uma classe @SessionScoped ou @ApplicationScoped vc nao precisa inserir no result.

abrassss

R

Valeu renanreismartins, mas meu problema é um pouco mais complexo;

Meu sistema é multi-tarefa (usando IFrame, na verdade eu uso o plugin Window do Jquery), ou seja o cliente pode executar N tarefas ao mesmo tempo dentro da mesma janela do browser. muito semelhante ao JInternalFrame do Swing

E com isso o SessionScope não serve pra mim, pois um mesmo objeto adicionado ao SessionScope vai ser compartilhado por todas as tarefas e isso seria um problema aqui. Então eu estou simulando aqui algo como o ViewScope do JSF. Basicamente eu criei um Componente no SessionScope que tem um Map<String, Map<String, Object>> assim eu adiciono os valores na sessão porém separados por Tarefa. E quando o usuário clica no fechar da tarefa eu limpo os atributos desta tarefa.

Está tudo funcionando legal o único problema é que eu estou tentando disponibilizar na request os parametros de cada tarefa para poderem ser acessados via JSP. Já estou fazendo isso, mas hoje depois em cada metodo executado pelo VRaptor eu preciso chamar

public void metodoA(){
       ....
       addViewScope('atrbutoA', 10);
       ....
       
       resultAllViewScope(result);
}

e esse método resultAllViewScope pega todos os atributos de uma determinada tarefa e adiciona no Result.
O que eu preciso é chamar este método de dentro de um Interceptor, para poder retirar todas as chamadas a ele.

L

só colocar os includes antes do stack.next

R

Lucas, já tentei mas não vai, não sei o que estou fazendo de errado:
Interceptor

@Intercepts(after=ExecuteMethodInterceptor.class, before=ForwardToDefaultViewInterceptor.class)
public class WindowScopeInterceptor implements Interceptor{
	private final Result result;
	
	public WindowScopeInterceptor(Result result) {
		this.result = result;
	}

	@Override
	public boolean accepts(ResourceMethod arg0) {
		return true;
	}

	@Override
	public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException {
		result.include("TESTE", "VALOR TESTE");
		stack.next(method, instance);
	}
}

JSP

Teste: ${TESTE}

não aparece, o after e o before é desse jeito mesmo ?

R

Vish, agora testei aqui e descobri, é que meu método não manda para a visualização default. Ele faz um result.forwardTo(this.getClass()).lista();

Se chamar direto no browser o método lista ai funciona bem. Tem algum jeito de interceptar também nesse caso de fazer forward ou redirect ?

L

só tirar o after e o before deve funcionar

A

Olá a todos estou com problema com a seguinte linha

sempre quando meu código passa por ela me retorna um NullPointerException

e ainda não cosegui descobri o porque disso poderia me ajudar ?

L

como vc tá recebendo o result? tá vindo do construtor?

A

Sim este é o construtor da minha classe

public LoginController(UsuarioSession session, ViewClienteAtivoWebDao clienteDao, Result result) { this.usuarioSession = session; this.clienteDao = clienteDao; this.result = result; }

não sei se entendi direito mas ele ja executa a instancia dos meus objetos esta correto?

L
result.use(Results.logic()).redirectTo(IndexController.class).index();

essa linha só deveria dar null pointer se o result estiver null… tem certeza que o null pointer é nela?

vc tá mudando o result em algum lugar?

vc pode abreviar essa linha pra:

result.redirectTo(IndexController.class).index();
A

Lucas,
eu observei o código aqui realmente não tem nada referente a ele a não ser no construtor da classe se quiser posso postar a classe inteira aqui para que possa critica-la.

/**
 * 
 */
package br.com.xxx.xxx.controller;

import java.net.InetAddress;
import java.net.UnknownHostException;

import br.com.xxx.xxx.dao.ViewClienteAtivoWebDao;
import br.com.xxx.xxx.model.Cliente;
import br.com.xxx.xxx.util.Public;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.ioc.Component;


@Component
@Resource
public class LoginController {
	private UsuarioSession usuarioSession;
	private ViewClienteAtivoWebDao clienteDao ;
	private Result result;
	
	public LoginController(UsuarioSession session, ViewClienteAtivoWebDao clienteDao, Result result) {
		this.usuarioSession = session;
		this.clienteDao = clienteDao;
		this.result = result;
	}
	
	public LoginController() {
		// TODO Auto-generated constructor stub
	}
	
	@Public
	@Get("/login")
	public void login(){
		
	}
	
	@Public
	@Post("/autenticar")
	public void autenticar(Cliente cliente){
		this.clienteDao = new ViewClienteAtivoWebDao();
		String ipClienteHost = null; 
		try {
			System.out.println(InetAddress.getLocalHost().getHostName());
			System.out.println(InetAddress.getLocalHost().getHostAddress());
			ipClienteHost = InetAddress.getLocalHost().getHostAddress();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
		Cliente clienteAu = null;
		if(ipClienteHost.contains("192.168.")){
			
			if(cliente.getDscSenhaInternet().contains("XXXXX"))
				clienteAu = this.clienteDao.getClienteView(cliente.getDscCnpj());
			else
				result.include("error", "Cnpj ou senha incorreta!").redirectTo(this).login();
			
		}
		else 
			clienteAu = this.clienteDao.getClienteView(cliente.getDscCnpj(), cliente.getDscSenhaInternet());
		this.usuarioSession  = new UsuarioSession();
		if(clienteAu != null){
			this.usuarioSession.setCliente(clienteAu);
					
			result.redirectTo(IndexController.class).index();  
		}else{
			result.include("error", "Cnpj ou senha incorreta!").redirectTo(this).login();
		}
	}
	
	@Get("/logout")
	public void logout(){
		
	}
}
A

para o caso de ajudar em alguma coisa aqui esta o stacktrace do erro

15:55:06,786 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/downloadnfe].[default]] (http--0.0.0.0-80-1) Servlet.service() for servlet default threw exception: br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:93) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) [vraptor-3.4.1.jar:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_29] Caused by: java.lang.NullPointerException at br.com.autoglass.downloadnfe.controller.LoginController.autenticar(LoginController.java:67) [classes:] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_29] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_29] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_29] at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_29] at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61) [vraptor-3.4.1.jar:] ... 39 more

L

qual é a linha 67 do LoginController.java?

é a linha do result?

A

A linha 67 é o seguinte código

desculpe a falha ai é que quando estava tetando login e senha errados eu utilizo um result que também retorna um erro

L

separa essa linha em duas:

result.include("error", "Cnpj ou senha incorreta!");
result.redirectTo(this).login();
A

separando as linhas ainda obtive o seguinte erro

16:26:30,297 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/downloadnfe].[default]] (http--0.0.0.0-80-1) Servlet.service() for servlet default threw exception: br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:93) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) [vraptor-3.4.1.jar:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_29] Caused by: java.lang.NullPointerException at br.com.autoglass.downloadnfe.controller.LoginController.autenticar(LoginController.java:67) [classes:] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_29] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_29] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_29] at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_29] at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61) [vraptor-3.4.1.jar:] ... 39 more

L

remova esse construtor:

public LoginController() {  
        // TODO Auto-generated constructor stub  
    }

o vraptor deve estar chamando esse construtor, logo o result tah null.

A

Removendo eu obtive este erro aqui

16:33:17,520 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/downloadnfe].[default]] (http--0.0.0.0-80-1) Servlet.service() for servlet default threw exception: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'loginController': Unsatisfied dependency expressed through constructor argument with index 1 of type [br.com.autoglass.downloadnfe.dao.ViewClienteAtivoWebDao]: : No matching bean of type [br.com.autoglass.downloadnfe.dao.ViewClienteAtivoWebDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.autoglass.downloadnfe.dao.ViewClienteAtivoWebDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43) [org.springframework.web-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:263) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083) [org.springframework.context-3.0.5.RELEASE.jar:3.0.5.RELEASE] at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:86) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:46) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) [vraptor-3.4.1.jar:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_29] Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.autoglass.downloadnfe.dao.ViewClienteAtivoWebDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] ... 44 more

A

Descobri aqui dentro doque você me passou
eu removi o objeto DAO de dentro do constructor e funcionou

L

No matching bean of type [br.com.autoglass.downloadnfe.dao.ViewClienteAtivoWebDao]

esse cara tá anotado com @Component?

A

Uma outra duvida
Neste parametros de configuração dele eu preciso criar um interceptor para cada action que eu impelmentar?

A

Sim ele esta anotado como component eu li na documentação que quando eu desejasse utilizar ele como um component eu deveria anota-lo

esta errado isso?

L

o dao precisa estar com @Component (o controller só precisa do @Resource, não deveria estar com @Component)

e esse @Component é o do vraptor.

A

sim é do VRaptor mas ja o retirei,
coloquei apenas no DAO como você orientou.

Uma coisa que me deixou muito intrigado eu tenho um método que traz data e hora para a Saudação
o retorno dele é uma String

uma coisa que me deixou muito intrigado e que não estou conseguindo fazer

por exemplo na pagina eu coloco

só para enfatizar esse getDate é um metodo que retorna uma String contendo os dados que preciso da data

A

Uma outra coisa que me deixou muito intrigado eu criei um Interceptor para minha index
para que nas Action que chamo dela não entrem sem login porem não esta fincionando quando eu digito por exemplo na
barra de endereços o

localhost/aplicativo/

ele deveria direcionar para o login porem não faz isso

L

vc quer que isso:

Brasil --<a>${pageContext.request.contextPath}/getDate</a>

retorne algo do tipo:

Brasil -- <a>2012</a>

???

se sim, faça isso colocando um atributo no request, desse jeito que vc fez ele só vai colocar uma url na tela.

como está o accepts desse seu interceptor?

A

public boolean accepts(ResourceMethod method) { return !(method.getMethod().isAnnotationPresent(Public.class) || method .getResource().getType().isAnnotationPresent(Public.class)); }

este é o accepts do Interceptor

eu preciso criar uma anotação para oque é privado?

A

view plaincopy to clipboardprint?

Brasil -- <a>2012</a>

???

se sim, faça isso colocando um atributo no request, desse jeito que vc fez ele só vai colocar uma url na tela.

como está o accepts desse seu interceptor?

referente a isso eu não entendi a parte de colocar o atributo no request ,
eu tenho que ter um atributo na minha Controller que eu utilizarei para colocar ele no local da data?

L

o método que está anotado com @Path("/") (ou @Get("/")) está com @Public? vc tem certeza que não está passando pelo interceptor?

sobre a data, vc quer colocar a data atual mesmo? vc vai fazer isso num footer da vida?

vc pode fazer algo do tipo, no jsp:

<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate value="${now}" pattern="dd/MM/yyyy" />
A

Utilizando as tags citadas ele
dispara a seguinte exception

L

no value do fmt:formatDate vc tem que usar ${now}, e não só now

A

Resolvi de uma forma menos elegante mas deu certo precisava da data na sessão então coloquei um atributo que o get dele me retornava a data ataual
e resolve.

uma coisa que gostaria que me ajudasse se puder, é
eu estou retornando uma lista para colocar na tela

tipo tenho o meu metodo

public List<XmlPojo> getAllXml(){
XmlDao dao = new XmlDao();
List<XmlPojo> list = dao.getAllXml();
return list
}

poderem não consigo colocar o valor da lista na tela

L
result.include("xmls", objeto.getAllXml());

e no jsp ${xmls}

ou se esse método for de um controller e vc estiver acessando por uma url, vc acessa por ${xmlPojoList}

A

no meu controller eu tenho mais de um metodo que retorna uma lista como eu faço para gerenciar isso no caso eu chamo o
metodo no através de uma Action passando parametros para ele
e outro é no ato de carregar a página.

tipo quando a pagina carrega

tem la onde esta a tabela

e o outro na action de um form

${pageContext.request.contextPath}/getXml/hashXml
A

cara eu estou trabalhando com JMS dentro do meu projeto que agora esta com o VRaptor,
bom ao tentar chamar o meu método que inicializa a conexão com o ActiveMQ eu tive este erro

14:41:07,157 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/downloadnfe].[default]] (http--0.0.0.0-80-1) Servlet.service() for servlet default threw exception: br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NoClassDefFoundError: org/apache/activemq/ActiveMQConnectionFactory at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.autoglass.downloadnfe.interceptor.LoginInterceptor.intercept(LoginInterceptor.java:36) [classes:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) [vraptor-3.4.1.jar:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_29] Caused by: java.lang.NoClassDefFoundError: org/apache/activemq/ActiveMQConnectionFactory

poderia me ajudar com isso por favor

A

A exception acima eu consegui resolver o meu objeto de conexão com JMS estava statico e por isso deu erro

quando resolvido esse problema encontrei outro
que foi o seguinte

estou tentando implementar uma displaytag no meu aplicativo mas quando coloquei as taglibs no jsp deu o seguinte erro

L

${pageContext.request.contextPath}/getXml/hashXml

vc quer fazer uma requisição nova com isso, ou só imprimir um valor na tela?

se for só imprimir um valor, não é assim que vc vai fazer…

vc vai fazer no método do controller que mostra a jsp que vc tá:

result.include("umCara", getXml());
result.include("outroCara", getXml().hashXml());

e acessar na jsp como ${umCara} e ${outroCara}

e o problema do ClassNotFound é falta de jar no classpath.

L

/WEB-INF/jsp/index/index.jsp(3,5)

o problema é na linha 3, coluna 5 desse arquivo.

A

essa é a linha

L

véi, da onde vc tirou isso?

se vc quer colocar uma taglib, use <%@taglib … %>

A

Retirei o código de um pequeno tutorial que achei mostrando como colcoar a display tag junto do vraptor.

A

Consegui resolver na verdade não é uma taglib é que todas as jsps do cara estão anotadas no html

como <jsp:element input …

esse tipo de coisa
mas descobri que as referencias perteciam a tag

A

Caminhando aqui no desenvolvimento e aprendisagem do VRaptor, devo adimitir estou tendo muita dificuldade porque estava trabalhando até agora com JSF e Primefaces achei muito simples,
estou tentando colocar isso na tela

<display:table name="${xmls}"	id="xml" >
 				
						<display:column property="chaveNfe" title="Chave da Nota" />
						<display:column property="cnpjCliente" title="Cnpj"/>
						
						<display:column title="static value">static</display:column>
						
					
					</display:table>

o problema é mesmo setando o valor da lista na tela

segundo oque foi recomendado aqui ele diz não ter valor na variavel
como seu eu não houvesse atribuido nada a ela em momento algum.

L

vc fez o result.include(“xmls”, aLista) no controller?

A

Sim a lista possui 3 objetos dentro dela
não funcionou
diz que o valor esta vazio

L

se vc imprime o ${xmls} fora do displaytag aparece algo?

A

O estranho que sim eu coloquei ele como um atributo de sessão e resolveu consegui acessar os dados dele como atributo de sessão.

<display:table  cellspacing="0" cellpadding="0"
						name="${usuarioSession.lista}" id="xml" class="food_planner">

						<display:column property="chaveNfe" title="Chave da Nota" />
						<display:column property="cnpjCliente" title="Cnpj" />

						<display:column title="static value"><a class="btn-nfe" href="${pageContext.request.contextPath}/download">Baixar NFe</a></display:column>


					</display:table>

assim funcionou

vê na linha onde estou colcoando um link para download eu preciso passar o parametro junto a essa url tipo o numero da nota?

L

dá uma olhada na doc do displaytag, dá pra acessar cada elemento da lista e usar alguma propriedade. algo como ${elemento.idNota}

A

sim eu vi é possivel sim
minha duvida é o VRaptor vai ler a url apontando o id informado como parametro?

L

se vc criar uma lógica de download que recebe isso sim. Algo como

@Get("/download/{xml.nunNfe}")
public Download download(Xml xml) {...}
A

estou implementando um Download de um arquivo aqui e vi uma coisa

por exemplo esse código esta na documentação

public class PerfilController {

    // dao ...

    public Download foto(Perfil perfil) {
        File file = new File("/path/para/a/foto." + perfil.getId()+ ".jpg");
        String contentType = "image/jpg";
        String filename = perfil.getNome() + ".jpg";
       
        return new FileDownload(file, contentType, filename);
    }
}

só que tem um porem para mim trabalhar com o File assim eu escrever o arquivo em algum lugar o que normalmente o Servidor de aplicação não permite

L

não precisa ser File, pode ser byte[] ou InputStream tb.

O assunto aqui já divergiu bastante do assunto original do tópico, por favor abra tópicos novos pra dúvidas novas.

A

Desculpe é que como o negocio foi andando nem me liguei de abrir um novo topico.
Vou fazer isso

Criado 1 de março de 2012
Ultima resposta 13 de jun. de 2012
Respostas 53
Participantes 4