手上的项目现在要支持多平台,多个平台的显示内容大部分相同,但是页面的部分存在区别,为了便于维护,自己开发了一个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>完成配置如下:
相关推荐
• 采用hibernate3+struts2+spring2+freemarker主流技术架构 • 懂html就能建站,提供最便利、合理的使用方式 • 强大、灵活的标签,用户自定义显示内容和显示方式 • 在设计上自身预先做了搜索引擎优化,增强对...
· 采用hibernate3+struts2+spring2+freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强对...
· 采用hibernate3+spring mvc+spring2+freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强...
采用hibernate3+struts2+spring2+freemarker主流技术架构 懂html就能建站,提供最便利、合理的使用方式 强大、灵活的标签,用户自定义显示内容和显示方式 在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好...
· 采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强...
基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点采用hibernate3+struts2+spring2+freemarker主流技术架构 懂html就能建站,提供最便利、合理的使用方式 强大、灵活的标签,用户自定义显示...
· 采用SpringMVC3+Spring3+mybatis+Freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强对...
·采用hibernate3+struts2+spring2+freemarker主流技术架构 ·懂html就能建站,提供最便利、合理的使用方式 ·强大、灵活的标签,用户自定义显示内容和显示方式 ·在设计上自身预先做了搜索引擎优化,增强对搜索...
采用hibernate3+struts2+spring2+freemarker主流技术架构 懂html就能建站,提供最便利、合理的使用方式 强大、灵活的标签,用户自定义显示内容和显示方式 在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好...
基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,采用hibernate3+struts2+spring2+freemarker主流技术架构,懂html就能建站,提供最便利、合理的使用方式 ,强大、灵活的标签,用户自定义...
· 采用hibernate3+struts2+spring2+freemarker技术架构 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,支持mysql、oracle、sqlserver等数据库 · 懂html就能建站,提供最便利、合理的...
(支持自定义标签) 作者管理 来源管理 友情连接 顶部菜单管理 系统管理等等 联系业务和反馈问题请通过以下途径: QQ:401192126,373206284,107623331,420846205 MSN:wangxiaokuang@hotmail.com,simon_...
· SpringMVC3+Spring3+Hibernate3+Freemarker技术架构 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,支持mysql、oracle、sqlserver等数据库 · 懂html就能建站,提供最便利、合理的...
· 采用hibernate3+struts2+spring2+freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强对搜索...
2.采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构 3.懂html就能建站,提供最便利、合理的使用方式 4.强大、灵活的标签,用户自定义显示内容和显示方式 5. 在设计上自身预先做了搜索引擎优化,增强对...
· 采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强...
· 采用hibernate3+spring mvc+spring2+freemarker主流技术架构 · 懂html就能建站,提供最便利、合理的使用方式 · 强大、灵活的标签,用户自定义显示内容和显示方式 · 在设计上自身预先做了搜索引擎优化,增强...
采用hibernate3+struts2+spring2+freemarker主流技术架构 懂html就能建站,提供最便利、合理的使用方式 强大、灵活的标签,用户自定义显示内容和显示方式 在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好...
14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 ...
铭飞MCMS(铭飞内容管理系统)是一款支持不同平台、不同终端并且支持多站点的内容管理系统,SpringMVC4+Spring4+MyBatis3+Freemarker技术架构基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点;...