手上的项目现在要支持多平台,多个平台的显示内容大部分相同,但是页面的部分存在区别,为了便于维护,自己开发了一个freemarker的自定义标签check,通过check标签,自动检查<@check></@check>之间的内容是显示。
第一步:把页面上不同的平台存在差异的区别起个名字name标识,在zk中配置,每个平台要显示的区域名称的列表,配置示例如下:
{ "azure": [ "config.set" ,"config.domain" ], "cloudscape": [ "config.set" ,"config.domain" , "config.rule" ] }
cloudscape平台显示config.set,config.domain,config.rule三个区域,azure显示config.set,config.domain两个区域
2.开发自定义标签:
重点是: implements freemarker.template.TemplateDirectiveModel这个接口
import java.io.IOException; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import com.sohu.sce.console.services.ZookeeperService; import com.sohu.sce.console.utils.consts.Constants; import freemarker.core.Environment; import freemarker.template.TemplateDirectiveBody; import freemarker.template.TemplateDirectiveModel; import freemarker.template.TemplateException; import freemarker.template.TemplateModel; import freemarker.template.TemplateModelException; public class MyViewDirective implements TemplateDirectiveModel{ @Autowired ZookeeperService zkService; private static JSONObject viewConfig ; @Override public void execute(Environment env, Map params, TemplateModel[] model, TemplateDirectiveBody body) throws TemplateException, IOException { if(viewConfig== null){ synchronized (MyViewDirective.class) { if(viewConfig == null){ String config = zkService.getData("/conf/modules/console/view.config"); viewConfig = JSONObject.fromObject(config); } } } String name = getRequiredParam(params, "name"); String platfom = getParam(params, Constants.PLATFORM.NAME, Constants.PLATFORM.CLODUSCAPE); JSONArray viewList = viewConfig.getJSONArray(platfom); if(viewList != null && viewList.size() >0){ if(viewList.contains(name)){ body.render(env.getOut()); } } } static String getRequiredParam(Map params,String key) throws TemplateException { Object value = params.get(key); if(value == null || StringUtils.isEmpty(value.toString())) { throw new TemplateModelException("not found required parameter:"+key+" for directive"); } return value.toString(); } static String getParam(Map params,String key,String defaultValue) throws TemplateException { Object value = params.get(key); return value == null ? defaultValue : value.toString(); } }3.在spring的配置文件增加配置:
<entry key="check"> <bean class="com.sohu.sce.console.actions.freemarker.MyViewDirective" /> </entry>完成配置如下:
相关推荐
Struts2、Spring和Freemarker是Java Web开发中的三个重要框架,它们分别在MVC模式的不同层面提供了功能支持。Struts2是一个基于MVC设计模式的Web应用框架,Spring是一个全面的后端应用程序框架,而Freemarker则是一...
• 采用hibernate3+struts2+spring2+freemarker主流技术架构 • 懂html就能建站,提供最便利、合理的使用方式 • 强大、灵活的标签,用户自定义显示内容和显示方式 • 在设计上自身预先做了搜索引擎优化,增强对...
· 采用hibernate3+struts2+spring2+freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强对...
本资源包的核心内容是教你如何在JFinal项目中实现FreeMarker自定义标签的自动扫描和注册,从而提升模板引擎的功能和灵活性。 首先,我们需要理解自定义标签的概念。在FreeMarker中,自定义标签允许开发者扩展其内置...
除了基本配置,我们还可以进一步探索Spring MVC和Freemarker的高级特性,如模型验证、国际化支持、异常处理和自定义标签等。例如,使用Spring的`@Valid`注解进行表单验证,使用`MessageSource`实现多语言支持,以及...
5. 视图展示:探讨如何使用JSP、FreeMarker或其他模板技术来渲染页面,以及如何利用Struts 2的标签库简化视图开发。 6. 拦截器和过滤器:讲解如何自定义Struts 2的拦截器来实现权限控制、日志记录等功能,以及如何...
**Spring 整合 ...随着你对这两个技术的深入学习,你会发现它们在实际项目中的强大功能,例如条件语句、循环结构、自定义标签等,都能极大地提升开发效率。不断实践和探索,你将在 Web 开发领域取得更大的进步。
1. 在FreeMarker模板中使用Shiro标签库:在.ftl文件顶部引入Shiro标签库: ```html ${'@org.apache.shiro.web.tags.ShiroTagLibHandler@getTagLibUri()'}"> ${shiro}" as shiro/> ``` 2. 使用Shiro标签:在模板中...
- **自定义标签**: Freemarker 允许创建自定义标签,实现特定功能,如表单验证、数据格式化等。这通常通过编写 Java 代码,封装成宏库,然后在模板中调用。 4. **自定义标签的创建与使用** - **创建标签库**: ...
Struts 2、Spring 和 Hibernate 是 Java EE 企业应用开发中的三个重要框架,它们的整合被称为 SSM(Struts 2、Spring、Hibernate)框架。SSM 框架组合在一起,可以提供一个完整的轻量级解决方案,用于构建高效、可...
Freemarker还支持宏、函数、自定义标签库等功能,可以极大地增强模板的灵活性和可复用性。 在实际应用中,控制器层会将模型数据传递给视图,如下所示: ```java @GetMapping("/users") public String getUsers...
标题中的"spring+struts2+mabatis JAR"提到了三个重要的Java Web开发框架:Spring、Struts2和MyBatis。这三个框架是构建企业级应用的常用工具,它们各自有着独特的功能和优势。 Spring框架是Java领域的一个全功能...
Struts2、Spring和Hibernate是Java Web开发中的三大主流框架,它们组合在一起可以构建出高效、灵活的企业级应用程序。这个“struts2+spring+hibernate”项目整合了这三个框架,采用注解式开发模式,提高了开发效率并...
· 采用hibernate3+spring mvc+spring2+freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强...
在IT行业中,构建一个能够自动生成统计图的系统是一项常见的需求,特别是在数据分析和报表展示的...同时,这也是对MVC模式、Spring依赖注入和Struts请求调度的一个实践案例,对于提升Java Web开发技能具有很高的价值。
标题中的“Spring 使用Freemarker发送邮件”涉及的是在Java开发中使用Spring框架集成Freemarker模板引擎来创建和发送电子邮件。Spring框架提供了一个强大的邮件服务接口,可以方便地与各种邮件服务器进行交互,而...
Struts2、Spring和iBatis是Java Web开发中常用的三个框架,它们组合起来可以构建出高效、可维护的企业级应用程序。Struts2是一个MVC(Model-View-Controller)框架,Spring则是一个全面的后端解决方案,包括依赖注入...
在Java Web开发中,使用Hibernate作为持久层框架可以有效地管理和操作数据库,而SpringMVC则提供了强大的MVC架构支持。为了增强数据可视化能力,我们常常会集成JfreeChart库来生成各种类型的图表。本文将详细讲解...
采用hibernate3+struts2+spring2+freemarker主流技术架构 懂html就能建站,提供最便利、合理的使用方式 强大、灵活的标签,用户自定义显示内容和显示方式 在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好...
在这个项目中,分页功能可能通过Struts1的拦截器或者自定义标签来实现,允许用户按页浏览三国人物的信息,提高用户体验。 项目文件`SanGuo`可能包含以下内容: 1. **源代码**:包括Struts1的Action类、Spring的配置...