I have an action and freemarker result that includes an external Javascript 
file.  This javascript files needs to be able to use the getText() method.  I 
figured I'd name it "util.js.ftl" so that accessing it directly caused the 
sitemesh-freemarker filter to catch it, but this throws a NullPointerException 
(maybe because there's no ActionContext?):

GET /myservlet/util.js.ftl
java.lang.NullPointerException
        
org.apache.struts2.sitemesh.FreemarkerDecoratorServlet.process(FreemarkerDecoratorServlet.java:176)
        
org.apache.struts2.sitemesh.FreemarkerDecoratorServlet.doGet(FreemarkerDecoratorServlet.java:130)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        
org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:85)
        
com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
        
com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
        
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
        rss.web.filter.SkinFilter.doFilter(SkinFilter.java:98)
        
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
The action is simple and just returns SUCCESS.

        <action name="index" class="com.rgm.action.IndexAction">
            <result name="success" type="freemarker">index.ftl</result>
        </action>

Is there a recommended way for a result template to load external files such 
that they are separate GET requests from the browser, but are still parsed 
through the Sitemesh-Freemarker filters and servlets, with access to the value 
stack?  If I simply <#include "*/util.js.ftl" /> then the content is inlined -- 
this is not what I'm after.

I am using Struts 2.2.1 with Sitemesh+Freemarker Decorators as described on the 
sitemesh-plugin.html doc in the "Full Integration" section.

Sincerely,
Roland

Reply via email to