在使用Struts2与Freemarker开发时候,可以通过使用Freemarker的宏(macro)来达到数据与页面分离的效果,使页面开发者与后台业务开发者分离,并提高了业务代码的重用性。
主要的思路如下。
首先是Struts2代码
package com.test.mms.article.web.tag;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.annotation.Scope;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
@Scope("prototype")
public class TagAction extends ActionSupport {
public String execute() {
String[] names = { "Lucy", "Lily", "Gordon" };
ServletActionContext.getRequest().setAttribute("names", names);
return SUCCESS;
}
}
接着是Freemarker的宏声明,因为使用了struts2-convention-plugin
,故不需要配置文件指定跳转关系。
<#macro Test_tag >
<@s.action name="tag" namespace="/article/web/tag" executeResult="false">
</@s.action>
<#nested names>
</#macro>
请求了TagAction并将executeResult指定为false,不返回页面,只从request中获取数据。
下面是具体调用宏的页面。MMS是Freemarker的命名空间。
<@MMS.Test_tag >
<#if names??>
<ul>
<#list names as name>
<li>
${name}
</li>
</#list>
</ul>
<#else>
我是空的
</#if>
</@MMS.Test_tag>
MMS.Test_tag宏的声明也可以进行如下优化
<#macro Test_tag inner="1">
<@s.action name="tag" namespace="/article/web/tag" executeResult="false">
</@s.action>
<#nested names,ages,educations>
<#if inner="0">
<#if names??>
<#list names as name>
<span>${name}</span>
</#list>
</#if>
</#if>
</#macro>
简单解释下,宏加入了一个新参数inner 默认值是1,当inner为0时候为names提供一个默认的样式,而ages,educations是另外两组数据不提供默认样式。
分享到:
相关推荐
在struts2中使用freemarker模版.doc
1.FreeMarker 2.3.16pdf手册 2.struts2+freemarker web项目例子,可以运行
Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化,以后直接调用即可,无需修改任何源代码,改压缩文件包括 1、工具类; 2、源码(含jar包); 3、mysql数据库可执行文件; 4、struts2集成...
基于Struts2和freemarker整合的小程序,能够自动生成html页面,能够运行
Struts2与FreeMarker模板
Struts2框架技术对Freemarker做了很好的支持,开发人员只要熟悉Struts2的标签即可进行开发Freemarker模板文件,如果您还不熟悉具体的Struts2及标签应用请参考其他文献资料,本文主要阐述Struts2与Freemarker的配置...
FreeMarker与Struts2结合的部署
struts1.2 + freemarker实现登录成功页面静态化例子
struts2+freemarker
Struts2 和freemarker实例 简单STRUTS2的使用,和freeMarker的使用
NULL 博文链接:https://depravedangel.iteye.com/blog/443575
自己写的一个框架例子,公司也在用,框架是struts2+hibernate+freemarker
这是一个struts2 freemarker 国际化的小例子
NULL 博文链接:https://cdxs2.iteye.com/blog/1923067
简单的新闻发布系统 用到了SSH2框架 页面是用freemarker生成的静态页面 用户名Admin 密码123456
struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...
struts2+freemarker 生成静态页面,希望对大家有用!!!!
众所周知,struts2宣称freemarker模板中不再支持自定义标签,但如果工程UI仅用freemarker模板可以通过扩展struts标签简单实现,不是采用官方不推荐的配置JspSupportServlet实现的!内付详细说明及范例,此方法仅为团队...
Struts2整合FreeMarker实例框架初学例子....利用Struts2生成静态页面其实很灵活,很强大,尤其是利用Struts2对Freemarker较好的支持,充分利用Freemarker的模板功能来生成静态页面。 比较简单.大家见笑了.
Struts2和FreeMarker结合,表现层使用FTL标签,并在FTL页面中使用Struts2标签,供入门的朋友用,属最最基础的东东. 方家批评!