MyEclipse下struts2+hibernate+spring整合freemarker出现的问题
我使用的是MyEclipse8.6,ssh已经整合freemarker完毕,已经可以从action传递数据到.ftl模板
这边ssh整合我是用以前的项目将无关内容删掉来用的,至少现在用到的部分表现正常,可以从数据库读取数据
现在问题是,我想要在freemarker里面使用s标签
百度了方法,无非就是拷贝struts-tags.tld到WEB-INF文件夹
在模板文件里添加<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"]>
web.xml添加以下代码:
<servlet>
<servlet-name>JSPSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
此时在模板里只有错误提示,在调用s标签之前的内容也全部无法显示
错误提示:Expression JspTaglibs is undefined
百度之后说是因为在action里面获取模板并输出,没有将Session、JspTablibs封装到数据里面去
于是在action中添加了如下代码:(Map root = new HashMap();)
root.put("Request", request);
root.put("Session", session);
root.put("JspTaglibs", new TaglibFactory(session.getServletContext()));
然后错误提示就变了,在调用s标签的地方出现错误提示,调用s标签之前的内容显示正常
错误提示:Could not find an instance of freemarker.ext.servlet.ServletContextHashModel in the data model under either the name __FreeMarkerServlet.Application__ or Application
百度谷歌相关的内容很少很少,有搜索到一个解决方法说是因为获取模板并输出的方法,跳掉了FreeMarker一些初始化的操作,只要将这些操作添加进去就可以了,但是并没有详细的说明
所以我想问问各位:
1、我这个问题有没有什么解决方法?
2、我在web.xml中设置了默认的TemplatePath,在struts.xml中result的type为默认时(不填写)只需要设置模板名就可以了,但是如果type设置为freemarker反而需要添加/WEB-INF/Templates/,这个是何原因?
3、各位在使用freemarker时都是用什么方法来传递数据?