一.利用BaseController 方式处理
定义BaseController 如下:
package com.ly.jxc.controller;import org.springframework.stereotype.Controller;import freemarker.ext.beans.BeansWrapper;import freemarker.template.TemplateHashModel;import freemarker.template.TemplateModelException;@Controllerpublic class BaseController { private final static BeansWrapper wrapper = BeansWrapper .getDefaultInstance(); private final static TemplateHashModel staticModels = wrapper .getStaticModels(); protected static TemplateHashModel useStaticPacker(String packname) { TemplateHashModel fileStatics = null; try { fileStatics = (TemplateHashModel) staticModels.get(packname); } catch (TemplateModelException e) { e.printStackTrace(); } return fileStatics; };}
其他controller 继承 BaseController ,需要返回静态类时候 如下:
//register 静态访问 map.put("rule",useStaticPacker("com.ly.jxc.RuleUtils"));
页面使用:
<#if user.canRead(RuleUtils.BUY_ORDER) || user.canRead(RuleUtils.BUY_LOG) >.....
二 使用配置方式
定义FreemarkerStaticModels.java 如下:
package com.ly.jxc.util;import java.util.HashMap;import java.util.Properties;import java.util.Set;import freemarker.ext.beans.BeansWrapper;import freemarker.template.TemplateHashModel;/** * 处理freeMarker 访问静态类静态方法 * @author Administrator * */public class FreemarkerStaticModels extends HashMap
定义staticClass.properties
RuleUtils=com.ly.jxc.util.RuleUtils
在springmvc.xml 配置文件中
页面使用 同上。
最后说下两种的选择: 第一种实用于哪里用到哪里调用,第二种是直接返回所有到页面。