在struts2中使用freemarker

普通的struts2配置文件一般是这么配置的:
<action name="Action1" class="com.abc.Action1">
    
<result>/page.jsp</result>
</action>

这里的view是一个jsp页面,也可以改成是一个freemarker模板页面:

<action name="Action1" class="com.abc.Action1">
    
<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>

一个简单的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>

注意: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

posted @ 2008-10-28 14:44  Earl_86  阅读(310)  评论(0编辑  收藏  举报