虽然freemarker自己提供了一些ftl指令,可以对数据模型中的数据进行迭代输出,也提供了一定的条件判断能力,但struts2提供的标签远不止于此,他还提供了一些列的表现标签,例如form,因此还是需要在freemarker模板中使用struts2标签
在freemarker模板中使用标签毕竟不同于jsp页面中使用标签,因为freemarker不支持tablib指令导入标签库,但struts2为了在freemarker模板中使用标签库,提供了额外的支持,为了在freemarker模板中使用标签库,可以按如下步骤进行操作
1.将系统所需的标签库定义文件(也就是tld文件)复制到web应用中,对于struts2系统,则需要将struts2-core-2.0.6.jar中的struts-tag.tld拷贝到web应用中
2.在web.zml中启动JSPSupportServlet
<
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 >
3.在freemarker模板中使用assign指令导入标签库,导入标签库代码如下:
<
#assign
s
=JspTaglibs["/WEB-INF/struts-tags.tld"]
>
4.加入标签库定义后就可以使用struts2标签了(在jsp中没有是<s:form></s:form>)
<
@s
.form action
="list"
>
< @s .textfield label ="name" />
/ @s.fom
< @s .textfield label ="name" />
/ @s.fom
后记:我们不能再浏览器中直接访问freemarker模板,那样只会显示模板的源文件,需要在struts.xml进行配置result
<
result
type
="freemarker"
>
/WEB-INF/result.ftl
</
result
>