vendredi 1 avril 2011

java J2EE : tapestry et Spring

Pour utiliser Spring et Tapestry sur le même projet, il est nécessaire d'utiliser une version de tapestry < 5.1.0.18 et d'utiliser les dépendances maven suivantes :

La prise en compte de la configuration Spring par tapestry se fait en utilisant un filter org.apache.tapestry5.spring.TapestrySpringFilter et pas org.apache.tapestry5.TapestryFilter.

Attention, il est nécessaire d'ajouter la dépendance maven tapestry-spring dans votre pom.xml, et il faut noter que les bean spring sont accessibles par l'annotation @inject de tapestry !!!

Ce dernier va remplacer le listener de contexte fournit par Spring.

Les paramètres de configuration sont les mêmes que ceux fournit pour Spring, en l'occurence :

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-front.xml</param-value>
</context-param>


et pour le web.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>portail Tapestry 5 Application</display-name>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-front.xml</param-value>
</context-param>
<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>net.portail.web</param-value>
</context-param>

<filter>
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>app</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>