Dúvida com Spring + Vraptor

Pessoal,

tenho um projeto Spring e agora quero adicionar o Vraptor a esse projeto. Estou com dúvida se as libs não podem entrar em conflito já que o VRaptor tem libs do Spring dentro dele. Como eu devo proceder?

Obrigada =)

olá,

se vc usa o Spring 3, não vai ter problemas.

se usa o Spring 2, substitua as suas libs do spring pelas respectivas da versão 3.

Abraços
Lucas

Oi Lucas,

realmente, eu vi que se eu colocar o applicationContext.xml funcionaria. Só que agora estou com um outro problema e acho que pode ser grave.

No applicationContext.xml eu coloquei:

<?xml version="1.0" encoding="UTF-8"?> oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@10.0.162.222:1521:ORA10LOCAL jaqs teste
<property name="transactionManager">
  <ref local="transactionManager"/>
</property>

<property name="proxyTargetClass" value="false"/>
<property name="transactionAttributes">
  <props>
    <prop key="insert*">PROPAGATION_REQUIRED, -Exception</prop>
    <prop key="update*">PROPAGATION_REQUIRED, -Exception</prop>
    <prop key="delete*">PROPAGATION_REQUIRED, -Exception</prop>
  </props>
</property>

Ok, comentei parte por parte, e essa está com problema:

<property name="transactionManager">
  <ref local="transactionManager"/>
</property>

<property name="proxyTargetClass" value="false"/>

Stack Trace:

18:33:46,344 DEBUG [StereotypedBeansRegistrar] scanning class org.springframework.jdbc.datasource.DataSourceTransactionManager
18:33:46,361 DEBUG [StereotypedBeansRegistrar] scanning null
17/02/2011 18:33:46 org.apache.catalina.core.StandardContext filterStart
GRAVE: Exception starting filter vraptor
java.lang.NullPointerException
at br.com.caelum.vraptor.ioc.spring.StereotypedBeansRegistrar.handleRefresh(StereotypedBeansRegistrar.java:58)
at br.com.caelum.vraptor.ioc.spring.StereotypedBeansRegistrar.onApplicationEvent(StereotypedBeansRegistrar.java:46)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:303)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:911)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:428)
at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:106)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:87)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4405)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5037)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:738)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:289)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:442)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:674)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.startup.Catalina.start(Catalina.java:596)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
17/02/2011 18:33:46 org.apache.catalina.core.StandardContext startInternal
GRAVE: Error filterStart
17/02/2011 18:33:46 org.apache.catalina.core.StandardContext startInternal
GRAVE: Context [/vraptor-blank-project] startup failed due to previous errors
17/02/2011 18:33:46 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
GRAVE: The web application [/vraptor-blank-project] registered the JBDC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
17/02/2011 18:33:46 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
17/02/2011 18:33:46 org.apache.coyote.ajp.AjpProtocol start
INFO: Starting Coyote AJP/1.3 on ajp-8009
17/02/2011 18:33:46 org.apache.catalina.startup.Catalina start
INFO: Server startup in 3262 ms

tire o RequestContextListener do web.xml

PS: coloque os códigos entre [code ] e [/code ] (sem espaço dentro da tag)

Não tem isso no meu web.xml, só tem o filter do VRaptor

[code]<?xml version="1.0" encoding="UTF-8"?>

vraptorProcedure

<!--
	VRaptor will scan classpath for all @Component and 
	@Resource inside WEB-INF/classes

	If you want to load them also from WEB-INF/lib/ jars, 
	you need to specify from which packages they will
	be loaded, comma separated:
-->

<!-- 
<context-param>
    	<param-name>br.com.caelum.vraptor.packages</param-name>
        <param-value>br.com.caelum.vraptor.blank</param-value>
</context-param>
 -->

<!--  
   if you are using a servlet 3.0 container 
	as glassfish 3 or jetty 8, you dont need this
	filter configuration 
-->
	
<!-- <context-param>
    	<param-name>br.com.caelum.vraptor.provider</param-name>
        <param-value>br.com.caelum.vraptor.ioc.guice.GuiceProvider</param-value>
</context-param>-->
	
<filter>
	<filter-name>vraptor</filter-name>
	<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
</filter>

<filter-mapping>
	<filter-name>vraptor</filter-name>
	<url-pattern>/*</url-pattern>
	<dispatcher>FORWARD</dispatcher>
	<dispatcher>REQUEST</dispatcher>
</filter-mapping>

[/code]

substitua o jar do vraptor por esse que está anexado, e mande o que aparece no log, por favor?

Apareceu isso:

17/02/2011 19:46:50 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;c:\program files\common files\microsoft shared\windows live;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem;C:\Windows\system32\windowspowershell\v1.0;c:\program files\windows live\shared;c:\program files\ibm\gsk8\lib;C:\PROGRA~1\IBM\SQLLIB~1\BIN;C:\PROGRA~1\IBM\SQLLIB~1\FUNCTION;C:\PROGRA~1\IBM\SQLLIB~1\SAMPLES\REPL;C:\Program Files\Apache Software Foundation\apache-maven-3.0.1\bin;C:\Program Files\Java\jdk1.6.0_21\bin
17/02/2011 19:46:51 org.apache.tomcat.util.digester.SetPropertiesRule begin
AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:testeVraptorProcedure’ did not find a matching property.
17/02/2011 19:46:51 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
17/02/2011 19:46:51 org.apache.coyote.ajp.AjpProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8009
17/02/2011 19:46:51 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 655 ms
17/02/2011 19:46:51 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
17/02/2011 19:46:51 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.5
19:46:52,913 INFO [BasicConfiguration ] Using class br.com.caelum.vraptor.ioc.spring.SpringProvider as Container Provider
19:46:52,950 INFO [DefaultSpringLocator] Using an XmlWebApplicationContext, searching for applicationContext.xml
19:46:53,062 INFO [WebAppBootstrapFactory] No static WebAppBootstrap found.
19:46:53,062 INFO [BasicConfiguration ] br.com.caelum.vraptor.scanning = null
19:46:53,310 INFO [XmlWebApplicationContext] Refreshing Root WebApplicationContext: startup date [Thu Feb 17 19:46:53 BRST 2011]; root of context hierarchy
19:46:53,435 INFO [XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [applicationContext.xml]
19:46:53,769 INFO [DefaultListableBeanFactory] Overriding bean definition for bean ‘org.springframework.context.annotation.internalAutowiredAnnotationProcessor’: replacing [Root bean: class [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Root bean: class [br.com.caelum.vraptor.ioc.spring.InjectionBeanPostProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null]
19:46:54,129 INFO [DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@11ef443: defining beans [dataSource,transactionManager,txProxyTemplate,pathAnnotationRoutesParser,XStreamXMLDeserializer,objenesisProxifier,defaultAcceptHeaderToFormat,defaultConverters,defaultInterceptorHandlerFactory,paranamerNameProvider,defaultResourceTranslator,defaultTypeNameExtractor,defaultRouter,defaultRestDefaults,topologicalSortedInterceptorRegistry,defaultMultipartConfig,nullProxyInitializer,encodingHandlerFactory,defaultMethodNotAllowedHandler,defaultTypeFinder,defaultDeserializers,defaultResourceNotFoundHandler,interceptorListPriorToExecutionExtractor,noRoutesConfiguration,defaultRoutes,stereotypeHandler,converterHandler,interceptorStereotypeHandler,deserializesHandler,stereotypedBeansRegistrar,defaultSpringLocator,XStreamJSONSerialization,replicatorOutjector,defaultRepresentationResult,downloadInterceptor,XStreamJSONPSerialization,defaultRefererResult,XStreamXMLSerialization,flashInterceptor,HTMLSerialization,defaultRestHeadersHandler,executeMethodInterceptor,instantiateInterceptor,defaultValidator,defaultPageResult,jstlLocalization,servlet3MultipartInterceptor,defaultStatus,defaultFormatResolver,ognlParametersProvider,defaultResult,resourceLookupInterceptor,jsonDeserializer,applicationConfiguration,outjectResult,defaultValidationViewsFactory,parametersInstantiatorInterceptor,defaultMethodInfo,deserializingInterceptor,emptyElementsRemoval,forwardToDefaultViewInterceptor,defaultPathResolver,defaultHttpResult,exceptionHandlerInterceptor,emptyResult,defaultLogicResult,nullBeanValidator,defaultExceptionMapper,primitiveFloatConverter,floatConverter,byteConverter,uploadedFileConverter,longConverter,bigDecimalConverter,shortConverter,primitiveDoubleConverter,primitiveCharConverter,bigIntegerConverter,primitiveBooleanConverter,stringConverter,localeBasedCalendarConverter,primitiveShortConverter,primitiveLongConverter,enumConverter,primitiveByteConverter,characterConverter,primitiveIntConverter,integerConverter,booleanConverter,localeBasedDateConverter,doubleConverter,VRaptorRequestProvider,httpServletRequestProvider,httpServletResponseProvider,httpSessionProvider,defaultInterceptorStack,enhancedRequestExecution,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.aop.config.internalAutoProxyCreator,indexController]; root of factory hierarchy
19:46:54,197 INFO [DriverManagerDataSource] Loaded JDBC driver: oracle.jdbc.driver.OracleDriver
19:46:54,354 INFO [DefaultConverters ] Registering bundled converters
19:46:54,355 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.PrimitiveFloatConverter
19:46:54,355 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.FloatConverter
19:46:54,355 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.ByteConverter
19:46:54,355 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.interceptor.multipart.UploadedFileConverter
19:46:54,357 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.LongConverter
19:46:54,358 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.BigDecimalConverter
19:46:54,358 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.ShortConverter
19:46:54,358 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.PrimitiveDoubleConverter
19:46:54,358 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.PrimitiveCharConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.BigIntegerConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.PrimitiveBooleanConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.StringConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.LocaleBasedCalendarConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.PrimitiveShortConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.PrimitiveLongConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.EnumConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.PrimitiveByteConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.CharacterConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.PrimitiveIntConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.IntegerConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.BooleanConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.LocaleBasedDateConverter
19:46:54,361 DEBUG [DefaultConverters ] bundled converter to be registered: class br.com.caelum.vraptor.converter.DoubleConverter
17/02/2011 19:46:54 org.apache.catalina.core.StandardContext filterStart
GRAVE: Exception starting filter vraptor
java.lang.NullPointerException
at br.com.caelum.vraptor.ioc.spring.StereotypedBeansRegistrar.handleRefresh(StereotypedBeansRegistrar.java:58)
at br.com.caelum.vraptor.ioc.spring.StereotypedBeansRegistrar.onApplicationEvent(StereotypedBeansRegistrar.java:46)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:303)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:911)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:428)
at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:106)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:87)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4405)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5037)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:738)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:289)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:442)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:674)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.startup.Catalina.start(Catalina.java:596)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
17/02/2011 19:46:54 org.apache.catalina.core.StandardContext startInternal
GRAVE: Error filterStart
17/02/2011 19:46:54 org.apache.catalina.core.StandardContext startInternal
GRAVE: Context [/vraptor-blank-project] startup failed due to previous errors
19:46:54,467 DEBUG [StereotypedBeansRegistrar] scanning class org.springframework.jdbc.datasource.DriverManagerDataSource for bean definition dataSource
19:46:54,467 DEBUG [StereotypedBeansRegistrar] scanning class org.springframework.jdbc.datasource.DataSourceTransactionManager for bean definition transactionManager
19:46:54,482 DEBUG [StereotypedBeansRegistrar] scanning null for bean definition txProxyTemplate
17/02/2011 19:46:54 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
GRAVE: The web application [/vraptor-blank-project] registered the JBDC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
17/02/2011 19:46:54 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
17/02/2011 19:46:54 org.apache.coyote.ajp.AjpProtocol start
INFO: Starting Coyote AJP/1.3 on ajp-8009
17/02/2011 19:46:54 org.apache.catalina.startup.Catalina start
INFO: Server startup in 3351 ms

Ta parecendo que por causa do abstract=“true” o Vraptor não entende e se vc tira ele tenta instanciar a classe… Mas não temos certeza.

[code]

<property name="transactionManager">
  <ref local="transactionManager"/>
</property>

<property name="proxyTargetClass" value="false"/>

[/code]

na configuração:

<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

pra que serve o abstract = true? tenta tirá-lo

se precisar dele tenta trocar por

<bean id="txProxyTemplate" abstract="true" parent="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

tenta trocar:

<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 

<property name="transactionManager"> 
<ref local="transactionManager"/> 
</property> 

<property name="proxyTargetClass" value="false"/> 

</bean> 


<bean id="daoTxProxyTemplate" abstract="true" parent="txProxyTemplate"> 

<property name="transactionAttributes"> 
<props> 
<prop key="insert*">PROPAGATION_REQUIRED, -Exception</prop> 
<prop key="update*">PROPAGATION_REQUIRED, -Exception</prop> 
<prop key="delete*">PROPAGATION_REQUIRED, -Exception</prop> 
</props> 
</property> 

por

<bean id="daoTxProxyTemplate" abstract="true" parent="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 

    <property name="transactionManager"> 
        <ref local="transactionManager"/> 
    </property> 

    <property name="proxyTargetClass" value="false"/> 


    <property name="transactionAttributes"> 
    <props> 
       <prop key="insert*">PROPAGATION_REQUIRED, -Exception</prop> 
       <prop key="update*">PROPAGATION_REQUIRED, -Exception</prop> 
       <prop key="delete*">PROPAGATION_REQUIRED, -Exception</prop> 
    </props> 
</property> 

Use esse snapshot, ele corrige o problema:

https://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.3.2-SNAPSHOT/vraptor-3.3.2-20110218.120142-1.jar

Oi Lucas! Funcionou aqui querido! Muito obrigada :slight_smile: