You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Nick Tucker <ni...@ntlworld.com> on 2006/12/27 20:39:40 UTC

Struts 2.0.2 and Freemarker

On converting from Struts 2.0.1 to 2.0.2
I get the following error when I try and use Sitemesh Freemarker Decorators.

The decorators work with 2.0.1.

Some advice on what changes I need to make would be appreciated

Thanks
Nick Tucker


2006-12-27 18:53:19,166 ERROR
(org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/Struts2].[default]:253)
- Servlet.service() for servlet default threw exception
javax.servlet.ServletException: Missing freemarker dependency
	at
org.apache.struts2.sitemesh.FreeMarkerPageFilter.applyDecorator(FreeMarkerPageFilter.java:135)
	at
org.apache.struts2.sitemesh.TemplatePageFilter.applyDecorator(TemplatePageFilter.java:113)
	at
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:59)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
	at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
	at
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
	at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
	at
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
	at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
	at
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:178)
	at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
	at
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135)
	at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
	at
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
	at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
	at
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:193)
	at
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
	at
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
	at
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

My relevant parts of my web.xml are:-

<?xml version="1.0" encoding="ISO-8859-1"?>
<!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>Struts 2 Test Application</display-name>

    <filter>
        <filter-name>securityFilter</filter-name>
       
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
            <param-name>targetClass</param-name>
           
<param-value>org.acegisecurity.util.FilterChainProxy</param-value>
        </init-param>
    </filter>

    <filter>
        <filter-name>ResponseOverrideFilter</filter-name>
       
<filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
    </filter>

    <filter>
        <filter-name>struts-cleanup</filter-name>
       
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>

    <filter>
        <filter-name>sitemesh</filter-name>
       
<filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class>
    </filter>
    
    <filter>
        <filter-name>action2</filter-name>
       
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>securityFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>ResponseOverrideFilter</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>
    
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>action2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
       
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>freemarker</servlet-name>
       
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
    
        <!-- FreemarkerServlet settings: -->
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>NoCache</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>ContentType</param-name>
            <param-value>text/html</param-value>
        </init-param>
    
        <!-- FreeMarker settings: -->
        <init-param>
            <param-name>template_update_delay</param-name>
            <param-value>0</param-value> <!-- 0 is for development only! Use
higher value otherwise. -->
        </init-param>
        <init-param>
            <param-name>default_encoding</param-name>
            <param-value>ISO-8859-1</param-value>
        </init-param>
        <init-param>
            <param-name>number_format</param-name>
            <param-value>0.##########</param-value>
        </init-param>

        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet>
        <servlet-name>JspSupportServlet</servlet-name>
       
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet>
        <servlet-name>sitemesh-freemarker</servlet-name>
       
<servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>default_encoding</param-name>
           <param-value>ISO-8859-1</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>freemarker</servlet-name>
        <url-pattern>*.ftl</url-pattern>
    </servlet-mapping>  

    <servlet-mapping>
        <servlet-name>sitemesh-freemarker</servlet-name>
        <url-pattern>*.dec</url-pattern>
    </servlet-mapping>

</web-app> 











-- 
View this message in context: http://www.nabble.com/Struts-2.0.2-and-Freemarker-tf2887380.html#a8066568
Sent from the Struts - User mailing list archive at Nabble.com.


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


Re: Struts 2.0.2 and Freemarker

Posted by Nick Tucker <ni...@ntlworld.com>.
  I've just tried again tonight using the latest nightly struts2 jar files 
  (no configuration changes)  and the problem has gone away. 

Nick



Laurie Harper wrote:
> 
> My guess would be that you're missing the Freemarker JAR(s) from your 
> classpath. If that's not the case, try switching on debug logging and 
> see if Struts gives you any more detail about the error condition.
> 
> L.
> 
> Nick Tucker wrote:
>> On converting from Struts 2.0.1 to 2.0.2
>> I get the following error when I try and use Sitemesh Freemarker
>> Decorators.
>> 
>> The decorators work with 2.0.1.
>> 
>> Some advice on what changes I need to make would be appreciated
>> 
>> Thanks
>> Nick Tucker
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Struts-2.0.2-and-Freemarker-tf2887380.html#a8093436
Sent from the Struts - User mailing list archive at Nabble.com.


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


Re: Struts 2.0.2 and Freemarker

Posted by Laurie Harper <la...@holoweb.net>.
My guess would be that you're missing the Freemarker JAR(s) from your 
classpath. If that's not the case, try switching on debug logging and 
see if Struts gives you any more detail about the error condition.

L.

Nick Tucker wrote:
> On converting from Struts 2.0.1 to 2.0.2
> I get the following error when I try and use Sitemesh Freemarker Decorators.
> 
> The decorators work with 2.0.1.
> 
> Some advice on what changes I need to make would be appreciated
> 
> Thanks
> Nick Tucker
> 
> 
> 2006-12-27 18:53:19,166 ERROR
> (org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/Struts2].[default]:253)
> - Servlet.service() for servlet default threw exception
> javax.servlet.ServletException: Missing freemarker dependency
> 	at
> org.apache.struts2.sitemesh.FreeMarkerPageFilter.applyDecorator(FreeMarkerPageFilter.java:135)
> 	at
> org.apache.struts2.sitemesh.TemplatePageFilter.applyDecorator(TemplatePageFilter.java:113)
> 	at
> com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:59)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> 	at
> org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> 	at
> org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> 	at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
> 	at
> org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
> 	at
> org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
> 	at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
> 	at
> org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
> 	at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
> 	at
> org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:178)
> 	at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
> 	at
> org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135)
> 	at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
> 	at
> org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
> 	at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
> 	at
> org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:193)
> 	at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
> 	at
> org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
> 	at
> org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> 	at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> 
> My relevant parts of my web.xml are:-
> 
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!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>Struts 2 Test Application</display-name>
> 
>     <filter>
>         <filter-name>securityFilter</filter-name>
>        
> <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
>         <init-param>
>             <param-name>targetClass</param-name>
>            
> <param-value>org.acegisecurity.util.FilterChainProxy</param-value>
>         </init-param>
>     </filter>
> 
>     <filter>
>         <filter-name>ResponseOverrideFilter</filter-name>
>        
> <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
>     </filter>
> 
>     <filter>
>         <filter-name>struts-cleanup</filter-name>
>        
> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
>     </filter>
> 
>     <filter>
>         <filter-name>sitemesh</filter-name>
>        
> <filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class>
>     </filter>
>     
>     <filter>
>         <filter-name>action2</filter-name>
>        
> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
>     </filter>
> 
>     <filter-mapping>
>         <filter-name>securityFilter</filter-name>
>         <url-pattern>/*</url-pattern>
>     </filter-mapping>
> 
>     <filter-mapping>
>         <filter-name>ResponseOverrideFilter</filter-name>
>         <url-pattern>*.action</url-pattern>
>     </filter-mapping>
>     
>     <filter-mapping>
>         <filter-name>struts-cleanup</filter-name>
>         <url-pattern>/*</url-pattern>
>     </filter-mapping>
> 
>     <filter-mapping>
>         <filter-name>sitemesh</filter-name>
>         <url-pattern>/*</url-pattern>
>     </filter-mapping>
> 
>     <filter-mapping>
>         <filter-name>action2</filter-name>
>         <url-pattern>/*</url-pattern>
>     </filter-mapping>
> 
>     <listener>
>        
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>     </listener>
> 
>     <servlet>
>         <servlet-name>freemarker</servlet-name>
>        
> <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
>     
>         <!-- FreemarkerServlet settings: -->
>         <init-param>
>             <param-name>TemplatePath</param-name>
>             <param-value>/</param-value>
>         </init-param>
>         <init-param>
>             <param-name>NoCache</param-name>
>             <param-value>true</param-value>
>         </init-param>
>         <init-param>
>             <param-name>ContentType</param-name>
>             <param-value>text/html</param-value>
>         </init-param>
>     
>         <!-- FreeMarker settings: -->
>         <init-param>
>             <param-name>template_update_delay</param-name>
>             <param-value>0</param-value> <!-- 0 is for development only! Use
> higher value otherwise. -->
>         </init-param>
>         <init-param>
>             <param-name>default_encoding</param-name>
>             <param-value>ISO-8859-1</param-value>
>         </init-param>
>         <init-param>
>             <param-name>number_format</param-name>
>             <param-value>0.##########</param-value>
>         </init-param>
> 
>         <load-on-startup>1</load-on-startup>
>     </servlet>
> 
>     <servlet>
>         <servlet-name>JspSupportServlet</servlet-name>
>        
> <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
>         <load-on-startup>1</load-on-startup>
>     </servlet>
> 
>     <servlet>
>         <servlet-name>sitemesh-freemarker</servlet-name>
>        
> <servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
>         <init-param>
>             <param-name>TemplatePath</param-name>
>             <param-value>/</param-value>
>         </init-param>
>         <init-param>
>             <param-name>default_encoding</param-name>
>            <param-value>ISO-8859-1</param-value>
>         </init-param>
>         <load-on-startup>1</load-on-startup>
>     </servlet>
> 
>     <servlet-mapping>
>         <servlet-name>freemarker</servlet-name>
>         <url-pattern>*.ftl</url-pattern>
>     </servlet-mapping>  
> 
>     <servlet-mapping>
>         <servlet-name>sitemesh-freemarker</servlet-name>
>         <url-pattern>*.dec</url-pattern>
>     </servlet-mapping>
> 
> </web-app> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 


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