struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Pontarelli <br...@pontarelli.com>
Subject Re: The future of sitemesh integration with struts 2...
Date Fri, 23 Oct 2009 15:13:29 GMT
I was never big on the Servlet or Filter models. It seems to me that  
Struts2 is moving heavily towards conventions and the more things are  
just "pluggable" the easier it will be for users. I feel that the best  
approach would be for Struts2 to discover SiteMesh in the class path  
and wire it up automatically. I'd also wonder if this could be another  
case for some additional annotations in addition to XML configuration  
for defining templates.

Anyways, this is how I would proceed and leverage SiteMesh 3. This is  
my plan for JCatapult.

-bp


On Oct 23, 2009, at 8:38 AM, Christian Stone wrote:

> I have a working Struts 2 application where I am using Velocity AND  
> Freemarker decorators now intechangeably and SiteMesh is dispatching  
> them.  The full value stacks are available in each, as the same  
> Configurations are running on both the decorators and the struts  
> results.  You can now have decorators in Freemarker, Velocity, and  
> JSP as long as the servlets are defined in your web.xml.  I had to  
> make a lot of changes to bring the plugin up to date with the modern  
> freemarker, so good that this will be getting in early!  Note that  
> the old plugin fix I did is still there, so you can use either of  
> the two published solutions you wish, and you no longer are using a  
> crippled Freemarker with the new solution (shown below).
>
> I think my chin dropped when I saw all the decorators mixed in one  
> decorator.xml and compiling.  I am accessing all my statics in my  
> freemarker decorator (velocity 1.3 does not support such things), so  
> that is fixed as well.  Absolutely sweet!  On another note, I was  
> able to streamline the process a bit, so there should be a subtle  
> speed improvement as well.
>
> Here is an example web.xml snippet with the new changes hilighted.   
> Currently I read the configuration from freemarker.properties as  
> well as velocity.properties, and add any parameters present in the  
> servlet, so the init phase for the two technologies is a bit more  
> flexible and dynamic.
>
>    <filter>
>         <filter-name>struts-prepare</filter-name>
>         <filter- 
> class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</ 
> filter-class>
>         <init-param>
>             <param-name>actionPackages</param-name>
>             <param-value>net.stonescape.renegade20.presentation</ 
> param-value>
>         </init-param>
>     </filter>
>
>     <filter>
>         <filter-name>sitemesh</filter-name>
>         <filter- 
> class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
>     </filter>
>
>     <filter>
>         <filter-name>struts-execute</filter-name>
>         <filter- 
> class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</ 
> filter-class>
>     </filter>
>
>
>     <filter>
>         <filter-name>timing</filter-name>
>         <filter-class>net.stonescape.common.filter.TimerFilter</ 
> filter-class>
>     </filter>
>
>
>     <filter-mapping>
>         <filter-name>timing</filter-name>
>         <url-pattern>/*</url-pattern>
>         <dispatcher>REQUEST</dispatcher>
>     </filter-mapping>
>     <filter-mapping>
>         <filter-name>struts-prepare</filter-name>
>         <url-pattern>/*</url-pattern>
>     </filter-mapping>
>     <filter-mapping>
>         <filter-name>sitemesh</filter-name>
>         <url-pattern>/*</url-pattern>
>         <dispatcher>REQUEST</dispatcher>
>         <dispatcher>FORWARD</dispatcher>
>         <dispatcher>INCLUDE</dispatcher>
>     </filter-mapping>
>     <filter-mapping>
>         <filter-name>struts-execute</filter-name>
>         <url-pattern>/*</url-pattern>
>     </filter-mapping>
>
>    <servlet>
>        <servlet-name>sitemesh-freemarker</servlet-name>
>        <servlet- 
> class>org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</ 
> servlet-class>
>            <init-param>
>                <param-name>default_encoding</param-name>
>                <param-value>UTF-8</param-value>
>            </init-param>
>            <load-on-startup>1</load-on-startup>
>        </servlet>
>        <servlet-mapping>
>            <servlet-name>sitemesh-freemarker</servlet-name>
>            <url-pattern>*.ftl</url-pattern>
>        </servlet-mapping>
>
>   <servlet>
>         <servlet-name>sitemesh-velocity</servlet-name>
>         <servlet- 
> class>org.apache.struts2.sitemesh.VelocityDecoratorServlet</servlet- 
> class>
>         <init-param>
>             <param-name>default_encoding</param-name>
>             <param-value>UTF-8</param-value>
>         </init-param>
>         <load-on-startup>1</load-on-startup>
>     </servlet>
>     <servlet-mapping>
>         <servlet-name>sitemesh-velocity</servlet-name>
>         <url-pattern>*.vm</url-pattern>
>     </servlet-mapping>
>
>  -- Christian Stone
>
> On Oct 22, 2009, at 4:00 PM, Musachy Barroso wrote:
>
>> that sounds pretty reasonable to me. if you are up for the task, go
>> for it. 2.2 is far in the horizon and this would be a good time for
>> this kind of stuff.
>>
>> musachy
>
> -- 
>           _,--"
> cws        `-._        ________-_______         "----
>       _----'--'--------------------------------'--'----_
>      //_| | \ Christian Stone, Software Engineer / | |_\\
>     (_____|_|__=     xtian@stonescape.net     =__|_|_____)
>     _\_____=__   http://xtian.stonescape.net/        ___/_
>       \/-(o)-~~-(o)-~~-(o)-`------'-(o)-~~-(o)-~~-(o)-\/
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org


Mime
View raw message