struts中可以通过struts.xml配置action返回对应的jsp
<action name="Action" class="com.test.Action">
<result>/test.jsp</result>
</action>
也可以返回对应的freemark模板页面
<action name="Action" class="com.test.Action">
<result type="freemarker">/fmTest.ftl</result>
</action>
很多的时候我们需要在freemark中使用struts的标签
<#assign sec=JspTaglibs["/WEB-INF/security.tld"] />
<@sec.authentication property="name" />
但是freemark中默认是不支持struts的标签库的,这时我们需要引入对应得.tld文件
引用前把struts2-core-2.0.x.x.jar包里的META-INF/struts-tags.tld 复制到 /WEB-INF/struts-tags.tld
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<description><![CDATA["To make it easier to access dynamic data;
the Apache Struts framework includes a library of custom tags.
The tags interact with the framework's validation and internationalization features;
to ensure that input is correct and output is localized.
The Struts Tags can be used with JSP FreeMarker or Velocity."]]></description>
<display-name>"Struts Tags"</display-name>
<tlib-version>223</tlib-version>
<short-name>s</short-name>
<uri>/struts-tags</uri>
<tag>
<description><![CDATA[Execute an action from within a view]]></description>
<name>action</name>
<tag-class>org.apache.struts2.views.jsp.ActionTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<description><![CDATA[Whether the result of this action (probably a view) should be executed/rendered]]></description>
<name>executeResult</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
。。。。。。。。。。。。
<dynamic-attributes>false</dynamic-attributes>
</tag>
</taglib>
修改web.xml中的配置
<!-- JSPSupportServlet配置 -->
<servlet>
<servlet-name>JSPSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
如果遇到乱码问题,在配置中添加
<constant name="struts.i18n.encoding" value="gb2312" />
这样,在需要使用struts标签的freemark模板中在最上面引入后,就可以通过类似<@sec.form>的调用。