I also have many problems trying to integrate T5 with spring. Scary!!! On Dec 19, 2007 7:26 PM, <[EMAIL PROTECTED]> wrote:
> > I'm new to Tapestry. I've been wanting to take a look at it for some time, > and have a bit of time here at the end of the year. I've started with > Howard's tutorial for Tap5 and got the first stage of that working easily. > So then I created another simple page, and linked to that. Still working > fine, so time to start getting into something 'real'. Since we use Spring > for all our projects here I figured that should be my next step. I created > an iBatis DAO that accesses one of our existing JNDI datasources, with the > intent of having my page retrieve data from it for displaying. > > I followed the steps described here: > http://tapestry.apache.org/tapestry5/tapestry-spring/, but the dao is not > getting injected; I get a NPE when it comes time to access it. My logs > show > the initialization completing correctly, with the Spring beans being > created. Is there anything missing fom this description to complete the > wiring? > > I'm using Tapestry5.0.6, Spring2.0.1 (though I also tried 1.2.8), > iBatis2.3.0.677, running in Sun Appserver8.2 > > Here's my web.xml: > > <web-app> > <display-name>tapestry-tutorial1 Tapestry 5 Application</ > display-name> > <context-param> > <!-- The only significant configuration for Tapestry 5, this > informs Tapestry > of where to look for pages, components and mixins. --> > <param-name>tapestry.app-package</param-name> > <param-value>org.apache.tapestry.tutorial</param-value> > </context-param> > > <context-param> > <param-name>contextConfigLocation</param-name> > <param-value> > > classpath:org/apache/tapestry/tutorial/applicationContext.xml > </param-value> > </context-param> > > <filter> > <filter-name>app</filter-name> > <!-- > > <filter-class>org.apache.tapestry.TapestryFilter</filter-class> > --> > <filter-class> > org.apache.tapestry.spring.TapestrySpringFilter</filter-class> > </filter> > <filter-mapping> > <filter-name>app</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > > <listener> > <listener-class> > org.springframework.web.context.ContextLoaderListener</listener-class> > </listener> > </web-app> > > > org/apache/tapestry/tutorial/applicationContext.xml: > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.springframework.org/schema/beans > > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> > > <import resource= > "classpath:org/apache/tapestry/tutorial/dao/applicationContext-jndi.xml"/> > <import resource= > "classpath:org/apache/tapestry/tutorial/dao/ibatis/applicationContext.xml" > /> > </beans> > > > org/apache/tapestry/tutorial/dao/applicationContext-jndi.xml: > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> > > <bean id="serviceDataSource" class= > "org.springframework.jndi.JndiObjectFactoryBean"> > <property name="jndiName" value="srServiceDataSource"/> > </bean> > </beans> > > > org/apache/tapestry/tutorial/dao/ibatis/applicationContext.xml: > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> > > <bean id="sqlMapClient" class= > "org.springframework.orm.ibatis.SqlMapClientFactoryBean"> > <property name="configLocation" value= > "classpath:org/apache/tapestry/tutorial/dao/ibatis/sql-map-config.xml" /> > <property name="dataSource" ref="serviceDataSource" /> > </bean> > > <bean name="serviceDao" class= > "org.apache.tapestry.tutorial.dao.ibatis.ServiceDaoImpl"> > <property name="sqlMapClient" ref="sqlMapClient" /> > </bean> > </beans> > > > And in my page class: > > public class Target > { > @Inject > @Service("serviceDao") > private ServiceDao dao; > > public List<String> getOptions() > { > return dao.getOptions(); /// NPE here!! getOptions() > in the dao returns a hard-coded list at this time > } > > public void setDao(final ServiceDao _dao) > { > this.dao = _dao; > } > public ServiceDao getDao() > { > return dao; > } > } > > I haven't tried the alternate methods presented, but just by looking at > them I know that I will not be able to convince the other developers to > give Tapestry a try if it's necessary to go through that in order to use > Spring. Hopefully I'm just missing something simple and I'll be able to > get > this method working. But I've been struggling with it for the better part > of 2 days now. > > Dave > > We must begin not just to act, but to think, for there is no better slave > than the one who believes his slavery to be freedom, and we are in > no greater peril than when we cannot see the chains on our minds > because there are yet no chains on our feet. > -- Michael Reid > > > This message contains information from Equifax Inc. which may be > confidential and privileged. If you are not an intended recipient, please > refrain from any disclosure, copying, distribution or use of this > information and note that such actions are prohibited. If you have > received this transmission in error, please notify by e-mail > [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >