Velocity模板_toolbox

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: velocity模板引擎本身提供了基本的语法层面的解析,在实际的使用中还有很多可以扩展的工具来简化开发中遇到的一些问题,比如数据的格式化、页面相关的路径处理等。开发环境springspring bootvelocityspring boot mvcmybatis使用指南创建toolbox.xml: (放在WEB_INF目录下)<

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>

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;
    }
}

类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;
    }
}

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

常用工具类说明

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,...) );创建一个手动的交替符

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属性

目录
相关文章
|
3月前
|
数据可视化 JavaScript 前端开发
Cesium案例解析(五)——3DTilesPhotogrammetry摄影测量3DTiles数据
Cesium案例解析(五)——3DTilesPhotogrammetry摄影测量3DTiles数据
131 0
|
JSON JavaScript 数据格式
使用IIS发布Cesium 3dtiles模型
如何使用windows IIS发布Cesium 3dtiles模型
620 0
|
数据可视化 Java Android开发
JavaGUI:eclipse+e(fx)clipse+JavaFX Scene Builder搭建JavaFX可视化开发环境
JavaGUI:eclipse+e(fx)clipse+JavaFX Scene Builder搭建JavaFX可视化开发环境
159 0
JavaGUI:eclipse+e(fx)clipse+JavaFX Scene Builder搭建JavaFX可视化开发环境
|
iOS开发
Core Animation - 第一次使用图层来创建一个简单的项目
Core Animation - 第一次使用图层来创建一个简单的项目
78 0
[GEF]实现模板功能
最近遇到一个需求是要在GEF应用里实现“模板”的功能,也就是像word那样在新建一个文件的时候,用户可以选择一个模板,然后以这个模板为基础进行编辑,而不用每次都从头开始。同时,用户要能够创建新模板和对模板进行编辑,在模板里可以指定一些对模型的限制,例如树的最大高度、子节点数目的限制,等等。
938 0