`
小鑫。
  • 浏览: 135096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2、Spring、Freemarker自定义标签

 
阅读更多
1.继承FreemarkerManager重写createConfiguration方法
package com.rx.freemarker;

import java.util.Map;

import javax.servlet.ServletContext;

import org.apache.struts2.views.freemarker.FreemarkerManager;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import freemarker.template.Configuration;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;

public class MyFreemarkerManager extends FreemarkerManager {

	@Override
	protected Configuration createConfiguration(ServletContext servletContext)
			throws TemplateException {
		Configuration configuration = super.createConfiguration(servletContext);

		// 设置标签类型([]、<>),[]这种标记解析要快些
		configuration.setTagSyntax(Configuration.AUTO_DETECT_TAG_SYNTAX);

		// 取出上下文
		ApplicationContext applicationContext = WebApplicationContextUtils
				.getRequiredWebApplicationContext(servletContext);

		// 获取实现TemplateDirectiveModel的bean
		Map<String, Object> beans = applicationContext
				.getBeansOfType(TemplateDirectiveModel.class);

		for (String key : beans.keySet()) {
			Object obj = beans.get(key);
			if (obj != null && obj instanceof TemplateDirectiveModel) {
				configuration.setSharedVariable(key, obj);
			}
		}

		return configuration;
	}

}

2.在struts.properties中配置自定义管理类
struts.freemarker.manager.classname=com.rx.freemarker.MyFreemarkerManager

3.自定义标签
package com.rx.freemarker;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Component;

import freemarker.core.Environment;
import freemarker.template.ObjectWrapper;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;

@Component("ranks")
public class RanksTemplateDirectiveModel implements TemplateDirectiveModel {

	public void execute(Environment environment, Map map,
			TemplateModel[] atemplatemodel,
			TemplateDirectiveBody templatedirectivebody)
			throws TemplateException, IOException {
		environment.setVariable("ranks", ObjectWrapper.DEFAULT_WRAPPER
				.wrap(getRanks()));
		templatedirectivebody.render(environment.getOut());
	}

	private List<String> getRanks() {
		List<String> list = new ArrayList<String>();

		list.add("第一名");
		list.add("第二名");
		list.add("第三名");
		list.add("第四名");
		list.add("第五名");
		list.add("第六名");
		list.add("第七名");
		list.add("第八名");
		list.add("第九名");
		list.add("第十名");

		return list;
	}

}

4.模板
		[@ranks]
			[#list ranks as rank] 
				${rank} 
			[/#list]
		[/@ranks]
分享到:
评论
4 楼 小鑫。 2015-06-01  
chenxiangyu0425 写道
demo怎么运行直接把标签输出了


好久没看了,你只当参考看吧。
3 楼 chenxiangyu0425 2015-06-01  
demo怎么运行直接把标签输出了
2 楼 小鑫。 2013-02-22  
vicklin 写道
非常感谢你的demo,非常非常感谢。

不客气。
1 楼 vicklin 2013-02-19  
非常感谢你的demo,非常非常感谢。

相关推荐

    Struts2与FreeMarker模板

    通过将Struts2的模型数据传递给FreeMarker模板,前端开发人员可以使用FreeMarker提供的丰富的模板标签和函数来渲染页面。 #### 配置Struts2与FreeMarker 在Struts2中使用FreeMarker之前,首先需要进行相应的配置。...

    hibernate3+struts2+spring2+freemarker 主流技术架构 实例

    • 采用hibernate3+struts2+spring2+freemarker主流技术架构 • 懂html就能建站,提供最便利、合理的使用方式 • 强大、灵活的标签,用户自定义显示内容和显示方式 • 在设计上自身预先做了搜索引擎优化,增强对...

    freemark 自定义标签 总结

    自定义标签可以与Spring MVC、Struts2等框架集成,提供更丰富的功能。 通过上述内容,我们了解了Freemarker自定义标签的基本概念、创建与使用方法,以及如何在实际项目中发挥作用。自定义标签极大地增强了...

    struts2 spring hibernate integration

    通过拦截器(Interceptor)机制,Struts2允许开发者自定义行为,如日志、权限检查等。此外,Struts2支持多种结果类型,包括JSP、FreeMarker、Velocity等模板引擎,使得视图与控制器分离,提高了代码的可维护性。 **...

    struts2+spring练习

    此外,Struts2支持多种结果类型,如JSP、FreeMarker、Velocity等。 2. **Action类**:在Struts2中,Action类是业务逻辑的载体。你需要创建一个Action类,继承自`ActionSupport`或自定义的Action父类,并重写`...

    struts2、JSTL、Spring、JS、JSP标签大全

    Struts2还支持多种视图技术,如JSP、FreeMarker等,并且能够与其他框架如Hibernate、Spring无缝集成。 2. **JSTL(JavaServer Pages Standard Tag Library)**:JSTL是一组用于JSP的标签库,旨在减少在页面中使用...

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    1. **灵活性**:Spring MVC允许更多的自定义,如自定义拦截器、视图解析器,而Struts2的扩展性相对弱些。 2. **依赖注入**:Spring MVC是Spring框架的一部分,天然支持DI,而Struts2需要额外集成Spring才能实现DI。 ...

    struts+spring+ibatis的Demo

    在Struts 2中,Action类是业务逻辑处理的核心,请求通过配置的ActionMapping映射到相应的Action执行,返回的结果可以是JSP、FreeMarker模板或者其他自定义的结果类型。 **Spring框架** Spring是一个全面的后端应用...

    Struts2Spring Sample Project

    8. **视图技术**:在Struts2Spring项目中,视图通常使用JSP和FreeMarker等模板技术,结合OGNL(Object-Graph Navigation Language)表达式语言进行数据绑定。 9. **国际化和本地化**:项目可能包含了多语言支持,...

    Struts,Spring登陆

    6. **视图渲染**:如果登陆成功,Struts的Action会将控制权交给Spring MVC的视图解析器,如JSP或FreeMarker,来展示欢迎页面或者其他用户权限允许的内容。 7. **测试**:由于Spring的依赖注入特性,我们可以很容易...

    struts2和spring整合包

    Struts2和Spring是两个非常著名的Java开源框架,它们在企业级应用开发中扮演着重要角色。Struts2主要用于处理MVC(Model-View-Controller)架构中的控制器部分,而Spring则是一个全面的企业级应用框架,包括依赖注入...

    Struts2+Spring3+Hibernate4必备整合包

    Struts2支持多种模板技术,如FreeMarker和JSP,能够轻松实现动态页面渲染。 Spring3是全面的企业级应用框架,它在业务层提供了依赖注入(DI)和面向切面编程(AOP)的能力,帮助开发者管理对象的生命周期和装配。...

    jeecmsv2.3.2 内容管理系统 (hibernate3+struts2+spring2+freemarker)

    · 采用hibernate3+struts2+spring2+freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强对...

    struts2+spring+hibernate分页,事务,自定义切面

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2主要用于MVC(模型-视图-控制器)架构的实现,Spring提供了强大的依赖注入和面向切面编程功能,而Hibernate则是一个优秀的...

    Struts2_Spring_Example.zip_spring struts2_struts2-examp

    3. **Action 类**:这些类继承自 `ActionSupport` 或自定义的 Struts2 动作类,并且被声明为 Spring Bean。Struts2 通过 ActionProxy 将请求转发到 Spring 容器来创建动作类实例。 4. **Service 类**:这些类通常...

    spring4+struts2+mybatis完整整合包

    Struts2提供了强大的拦截器(Interceptor)机制,允许自定义行为,如数据验证、事务管理等。此外,它还支持多种视图技术,如JSP、FreeMarker、Velocity等。Struts2与Spring的整合使得用户可以利用Spring的DI特性,更...

    Hibernate3.2 Struts2.0 Spring2.5中文参考文档

    Struts2还支持拦截器,可以添加自定义的业务逻辑或验证规则。此外,它与各种模板技术如FreeMarker和JSP集成良好,使得视图层的创建更加灵活。 **Spring** 是一个全面的后端应用框架,它不仅仅涵盖了MVC,还包括依赖...

    struts2 spring hibernate jar包

    Struts2提供了拦截器机制,允许开发者自定义业务逻辑处理前后的操作,增强了可扩展性和灵活性。此外,它还支持多种视图技术,如JSP、FreeMarker等,并提供了丰富的标签库,使得视图层的开发更加便捷。 **Spring** ...

Global site tag (gtag.js) - Google Analytics