velocaity toobox 一下配置。
toolbox是velocity模板的自定义扩展,有点像jsp自定义jstl(有那么点相同的意思,实际上direcitive才是)。
今天我要说的重点主要是java代码中使用velocity模板引擎merge模板的时候toolbox的使用,至于velocityViewResolver 的配置
请参考http://blog.youkuaiyun.com/u012441887/article/details/49665779。
我直接贴出代码
@Configuration
public class Toolbox {
private Logger logger = LoggerFactory.getLogger(Toolbox.class);
@Bean
public ToolContext toolContext(){
ToolManager toolManager = new ToolManager();
String path = Toolbox.class.getClassLoader().getResource("/").getPath();
path = path.substring(0, path.indexOf("WEB-INF")) + "WEB-INF/conf/toolbox.xml";//很奇怪toolbox.xml不支持classpath路径读取,所以我们使用绝对路径去读取配置文件
toolManager.configure(path);
ToolContext toolContext = toolManager.createContext();
logger.info("ToolContext is init");
return toolContext;
}
}
public class VeloctiyToolbox{
@Autowird
private ToolContext toolcontext;//将他设置成 spring的bean
public String mergeTemplate(){
VelocityContext context = new VelocityContext(toolContext);//创建的时候给定toolbox就能起效
context.put("key",value);//设置自己的值
StringWriter sw = new StringWriter();
VelocityEngine engine = velocityConfig.getVelocityEngine();
engine.mergeTemplate(tempLate, "UTF-8", context, sw);
return sw.toString();
}
}
有了上面的代码我们就可以直接在 java代码里面merge velocity 模板。
接下来就是toolbox.xml配置,在WEB-INF下面创建toolbox.xml文件
这边我需要强调的是 velocity1.*跟2.0配置上有区别 而且向下不兼容。贴出2.0配置的代码
完成以上配置,美滋滋的去使用吧,小Tips 一般velocity 用在模板加载,比如短信模板,邮件模板。