在struts2中配置freemarker

阿超 发表于 2009-08-29 12:52 | 来源: | 阅读 420 次

普通的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了!

喜欢Java豆技术站点的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露



返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明 | 模板设计