zoukankan      html  css  js  c++  java
  • Velocity中#set指令

    引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容。

    指令是以#开头,后面紧跟一个关键字,比如if,else,foreach等。而这个关键字,是可以被放在{}中间的。这是规范的写法,但是可能不好看。

    #set

    #set指令用于向一个变量或者属性赋值。其格式为 #set($foo="bar")或者#set($foo.bar=$test) 。

    LHS必须是一个变量或者属性,RHS必须是以下7种类型之一:变量、属性、字符串字面值、数字字面值、方法、ArrayList、Map。比如:

     1 #set( $test = $test2 + 3)
     2 
     3 #set( $test.a = "abc")
     4 
     5 #set( $test.b = 1)
     6 
     7 #set( $test.c = $test.a)
     8 
     9 #set( $test.d = $test.calc("1+1"))
    10 
    11 #set( $test.e = ["123", "abc", $test.c])          访问时使用$test.e.get(0)就可以获得值"123"
    12 
    13 #set( $test.f = {"name":"car", "color":"red"})   访问时使用$test.f.get("color")就可以获得值"red"

    默认情况下,RHS是null的话,将不会对LHS进行赋值,LHS会保持原来的值。所以一个引用一旦被创建,一般是无法移除的。但是可以修改Velocity的某个配置,改变这一现象。在#foreach里进行判断时,要特别注意。

    在使用#set时,字符串的字面值如果放在双引号里,将会被解析。比如#set( $test.a = "abc"), 那么$test.a的值就是abc。而#set( $test.b = "$test.a")等价于#set( $test.b=$test.a )。但是#set( $test.b = '$test.a') 的结果却是把$test.a这个字符串字面值赋值给$test.b。

    当遇到需要输出大量的字符串字面值,而不是输出它们的实际值的情况时,可以使用#literal() ... #end来包围VTL Code。

    以上来源:http://www.cnblogs.com/yuepeng/archive/2010/11/23/1885257.html

    值得注意的地方:在vm文件中进行加减运算的时候

    所有操作符的两边都要加一个空格。

  • 相关阅读:
    48. 旋转图像(顺时针)
    560. 和为K的子数组
    75. 颜色分类(三指针移动||计数排序)
    670. 最大交换
    常见端口号汇总
    springboot解决跨域问题跨域
    jad使用
    tomcat9:解决tomcat catalina log和localhost log中文乱码
    JUC:阻塞队列
    JUC:读写锁
  • 原文地址:https://www.cnblogs.com/geekdc/p/5626899.html
Copyright © 2011-2022 走看看