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