`
chenqian
  • 浏览: 77635 次
  • 性别: Icon_minigender_1
  • 来自: 湘潭
社区版块
存档分类
最新评论

在struts2中使用freemarker

    博客分类:
  • ssh
阅读更多
转自互联网

普通的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了!
分享到:
评论
1 楼 benbear2008 2009-07-30  
struts2.1.6中 带有 <#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />  将报错,解决方法是去掉它。struts2.1.6貌似默认就导入了,不知道是怎么导入的。有知道的请告知下

相关推荐

Global site tag (gtag.js) - Google Analytics