velocity-tools spring中使用toolbox的一些破事

本文介绍如何在Java项目中使用Velocity模板引擎,并详细解释了如何配置Toolbox以实现自定义扩展。通过示例代码展示了如何在Java类中合并模板,并提供了toolbox.xml配置文件的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 用在模板加载,比如短信模板,邮件模板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值