JSP学习笔记(三十二):在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了!

posted @ 2008-08-28 17:46  魔豆  阅读(4572)  评论(0编辑  收藏  举报