普通的struts2配置文件一般是这么配置的:
<
action name
=
"
Action1
"
class
=
"
com.abc.Action1
"
>
< result >/ page.jsp </ result >
</ action >
< result >/ page.jsp </ result >
</ action >
这里的view是一个jsp页面,也可以改成是一个freemarker模板页面:
<
action
name
="Action1"
class
="com.abc.Action1"
>
< result type ="freemarker" >/ fm.ftl </ result >
</ action >
< result type ="freemarker" >/ fm.ftl </ result >
</ action >
当然我们希望能在fm.ftl上使用struts2的标签,需要在fm.ftl页面最开始添加对struts2标签的引用:
<
#assign s
=
JspTaglibs[
"
/WEB-INF/struts-tags.tld
"
]
/>
引用前把struts2-core-2.0.x.x.jar包里的META-INF/struts-tags.tld 复制到 /WEB-INF/struts-tags.tld
默认是不支持JspTaglibs的引用的,这里还需要一个额外的配置,修改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 >
< servlet-name > JspSupportServlet </ servlet-name >
< servlet-class >
org.apache.struts2.views.JspSupportServlet
</ servlet-class >
< load-on-startup > 1 </ load-on-startup >
</ servlet >
一个简单的fm.ftl文件的例子:
<
#assign s
=
JspTaglibs[
"
/WEB-INF/struts-tags.tld
"
]
/>
< html >
< head >
< meta http - equiv = " Content-Type " content = " text/html; charset=GB2312 " >
< title > Insert title here </ title >
</ head >
< body >
< @s.form action = "Action1 .action " >
< @s.textfield name = " username " ></ @s.textfield >
< @s.textfield name = " password " ></ @s.textfield >
< @s.submit value = " 提交 " />
</ @s.form >
< br /> 登录用户名:${username}
</ body >
</ html >
< html >
< head >
< meta http - equiv = " Content-Type " content = " text/html; charset=GB2312 " >
< title > Insert title here </ title >
</ head >
< body >
< @s.form action = "Action1 .action " >
< @s.textfield name = " username " ></ @s.textfield >
< @s.textfield name = " password " ></ @s.textfield >
< @s.submit value = " 提交 " />
</ @s.form >
< br /> 登录用户名:${username}
</ body >
</ html >
注意:struts2在freemarker页面中标签写法和jsp页面的写法不同,freemarker里是<@s.form>,jsp里是<s:form>,一定不要写错了!
使用时发现对中文的支持不好,显示时中文出现乱码,这里修改下struts.xml配置文件:
<
constant
name
="struts.i18n.encoding"
value
="gb2312"
/>
现在就可以在struts2中正常使用freemarker了!
转载: http://www.cnblogs.com/modou/articles/1278850.html
http://hi.baidu.com/zdz8207/blog/item/f483b01be7ba151f8718bfe0.html