我现在需要用到toolbox中的DateTool,但在配置velocity的toolbox的时候有一些问题,我的jFinal默认用的 velocity的render,我看过VelocityRender类中的代码,是直接通过Template去merge的,我猜 VelocityViewServlet
中也肯定会有这样的逻辑,所以我是不是可以在VelocityRender中集成toolbox呢?
我本想定义一个`CustomVelocityRender继承VelocityRender`,然后覆盖render方法,通过` ToolboxManager` 的方式引入toolbox,但是发现VelocityRender这个类不是public的。。。头疼。然后我又去继承Render这个类,发现 `RenderFactory.getServletContext()`方法也不是public的,,真是一点扩展的机会都不给啊。这样的设计是为什么呢
通过web.xml配置`VelocityViewServlet`的话,只能是浏览器请求*.vm的时候请求才会被`VelocityViewServlet `处理,但通过jFinal后我的请求都是/user/add这样的,然后在Render中会`render('user.html'),`这样的话请求就不会 通过`VelocityViewServlet,`所以通过这个servlet集成的toolbox也就不会生效。。请问应该怎么处理呢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
创建YourVelocityRender
并继承自 Render抽象类可以集成velocity的Toolbox,而不是去继承自VelocityRender。
可以使用JFinal.me().getServletContext()
来获取 servletContext。
render包下的render现在都是非public的,主要是因为我有一个设计习惯,尽量让所有东东保持最小可见性,当然,有时开发者可能需要扩展,如果扩展的理由非常充分,肯定会开放的。最保险的开放是接口与抽象类的开放,如果我开放XxxRender的话,假如将来我改或删这些Render会对你的代码造成影响,而你完全基于接口与抽象类来做是安全的