Velocity模板_toolbox

velocity模板引擎本身提供了基本的语法层面的解析,在实际的使用中还有很多可以扩展的工具来简化开发中遇到的一些问题,比如数据的格式化、页面相关的路径处理等。

开发环境

  • spring
  • spring boot
  • velocity
  • spring boot mvc
  • mybatis

使用指南

创建toolbox.xml: (放在WEB_INF目录下)

<?xml version="1.0" encoding="UTF-8"?>
<tools>
  <data type="string" key="version" value="2.0"/>
  <!-- 在这里配置 类,在项目启动的时候就自动把类实例化好了,在页面就可以用了,例子:下面  ${test.Method()}-->
  <toolbox scope="request">
  <!-- currentProject util start -->
<!-- <tool key="test" class="com.gzrj.services.Test"></tool>  -->
<!-- currentProject util end -->
    <!-- 下面的这些配置都是velocity的配置,可以不用管,也不能更改 -->
    <!-- velocity util start -->
<tool class="org.apache.velocity.tools.view.CookieTool"/>
    <tool class="org.apache.velocity.tools.view.ImportTool"/>
    <tool class="org.apache.velocity.tools.view.IncludeTool"/>
    <tool class="org.apache.velocity.tools.view.LinkTool"/>
    <tool class="org.apache.velocity.tools.view.PagerTool"/>
    <tool class="org.apache.velocity.tools.view.ParameterTool"/>
    <tool class="org.apache.velocity.tools.view.ViewContextTool"/>
    <tool class="org.apache.velocity.tools.generic.ContextTool"/>
    <tool class="org.apache.velocity.tools.generic.LoopTool"/>
    <tool class="org.apache.velocity.tools.generic.RenderTool"/>
<!-- velocity util end -->
  </toolbox>

  <toolbox scope="session" createSession="false">
      <tool class="org.apache.velocity.tools.view.BrowserTool"/>
  </toolbox>

  <toolbox scope="application">
      <tool class="org.apache.velocity.tools.generic.AlternatorTool"/>
      <tool class="org.apache.velocity.tools.generic.ClassTool"/>
      <tool class="org.apache.velocity.tools.generic.ComparisonDateTool"/>
      <tool class="org.apache.velocity.tools.generic.ConversionTool"/>
      <tool class="org.apache.velocity.tools.generic.DisplayTool"/>
      <tool class="org.apache.velocity.tools.generic.EscapeTool"/>
      <tool class="org.apache.velocity.tools.generic.FieldTool"/>
      <tool class="org.apache.velocity.tools.generic.MathTool"/>
      <tool class="org.apache.velocity.tools.generic.NumberTool"/>
      <tool class="org.apache.velocity.tools.generic.ResourceTool"/>
      <tool class="org.apache.velocity.tools.generic.SortTool"/>
      <tool class="org.apache.velocity.tools.generic.XmlTool"/>
      <tool class="org.apache.velocity.tools.generic.ListTool"/>
      <tool class="org.apache.velocity.tools.generic.DateTool"/>

  </toolbox>
</tools>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

Spring中配置Velocity Tools

  • 添加配置 
    基本的使用中将配置好的属性放到/WEB-INF目录下,并在application.properties中添加对应的配置:spring.velocity.toolbox-config-location=WEB-INF/toolbox.xml
  • 列表内容 
    1. 添加配置类
import org.springframework.boot.autoconfigure.velocity.VelocityProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.velocity.VelocityViewResolver;

@Configuration
public class VelocityConfig {

    @Bean(name = "velocityViewResolver")
    public VelocityViewResolver  velocityViewResolver(VelocityProperties properties) {
        VelocityViewResolver viewResolver = new VelocityViewResolver();
        viewResolver.setViewClass(VelocityLayoutToolboxView.class);
        properties.applyToViewResolver(viewResolver);// 设置默认属性,比如前缀和后缀
        return viewResolver;
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

类2:

public class VelocityLayoutToolboxView extends VelocityToolboxView  {
    private VelocityLayoutToolboxView() {

    }
    @Override
    protected Context createVelocityContext(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
        ViewToolContext ctx = new ViewToolContext(this.getVelocityEngine(), request, response, this.getServletContext());
        if (this.getToolboxConfigLocation() != null) {
            XmlFactoryConfiguration factory = new XmlFactoryConfiguration();

            factory. read(ResourceUtils.getURL(getToolboxConfigLocation()).openStream());

            ToolboxFactory toolboxFactory = factory.createFactory();
            toolboxFactory.configure(factory);
            Collection<ToolboxConfiguration> toolboxes = factory.getToolboxes();
            for (ToolboxConfiguration tc : toolboxes) {
                ctx.addToolbox(toolboxFactory.createToolbox(tc.getScope()));// 这样操作后就可以用工具里面的东西了。
            }
        }
        if (model != null && !model.isEmpty()) {
            ctx.putAll(model);
        }
        return ctx;
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

配置完成后,页面就可以使用工具类了。

常用工具类说明

https://velocity.apache.org/tools/devel/ 
https://github.com/apache/velocity-tools 
https://velocity.apache.org/tools/releases/2.0/summary.html

1.AlternatorTool:通过一个数组变量周期

配置属性:autlAlternate (),boolean 类型,默认是true 
方法和属性:

A:#set( $alt = $alternator.auto(value1,value2,...) );创建一个自动的交替符
B:#set( $alt = $alternator.make(value1,value2,...) );创建一个默认的交替符
C:#set( $alt = $alternator.manual(value1,value2,...) );创建一个手动的交替符
 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

2、ClassTool:工具,它的目的是要在模板中使用Java反射

3、ComparisonDateTool:工具格式,解析和比较日期

4、ContextTool:取当前页面的值

5、ConversionTool 允许数据之间的类型转换

6、displaytool工具提供了各种各样的方法来控制输出显示各种引用你的模板

7、escapetool工具提供一些逃离设施

8、FieldTool:工具允许方便地访问公共静态字段类,如字符串常量

9、LinkTool

工具使用超链接格式;这个工具有点不寻常的在每一个方法,参数将返回一个新实例的工具的一个副本的方法之一是呼吁,有额外的改变指定的方法调用。 
官方参考文档: 
http://velocity.apache.org/tools/devel/view/LinkTool.html

10、MathTool:工具提供数学函数

11、NumberTool:工具用于格式化数字

12、RenderTool:工具,使方法来评估给定的字符串作为VTL(Velocity模板语言)使用一个预先配置的上下文或您直接提供

13、ResourceTool:

工具访问resourcebundle的和格式化消息,大多数方法都返回一个新对象,大多与原始相同的方法,允许您建立参数优雅和简单,而不是试图记住如何使用方法与许多参数,必须在一个特定的顺序:所以,你可以访问资源的关键“你好。谁”“otherStuff”包与一个消息这样的论点:美元text.hello.whoever.bundle(otherStuff).insert(世界)而不是这样的:text.get美元(“你好。谁”、“otherStuff“零美元,”世界”)

14、SortTool:排序工具集合

15、XmlTool:工具用于阅读/导航XML文件;这在幕后使用dom4j提供完整的XPath支持遍历XML文件

16、BrowserTool:浏览器嗅探工具,它定义了属性用于测试客户端浏览器、操作系统、设备、语言…除了浏览器版本的相关属性和语言,所有属性都是布尔值。

17、CookieTool:工具用于读取和设置cookie

18、ImportTool:通用text-importing视图的工具模板

19、IncludeTool:工具允许透明的内容协商的方式模仿Apache httpd MultiViews方法;读取默认语言的ViewToolContext org.apache.velocity.tools.view.i18n。defaultLanguage;请注意,它并不实际的# include或#为你解析,但仅仅是帮助包括内容协商

20:LinkTool:工具使用超链接格式;这个工具有点不寻常的在每一个方法,参数将返回一个新实例的工具的一个副本的方法之一是呼吁,有额外的改变指定的方法调用,允许链接调用像href = ” $ link.relative(foobar.html).param .anchor(“id”、“25”)(“第四单元”)”(这将产生href = ” foobar.html ? id = 25 #第四单元”)

21:PagerTool:工具做request-based分页列表中的项目

22:ParameterTool:工具用来解析请求参数

23:ViewContextTool:扩展的通用ContextTool包括从HttpServletRequest键和值,HttpSession和ServletContext属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值