• Velocity(5)——#set指令


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

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

    #set

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

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

    #set( $test = $test2 + 3)
    
    #set( $test.a = "abc")
    
    #set( $test.b = 1)
    
    #set( $test.c = $test.a)
    
    #set( $test.d = $test.calc("1+1"))
    
    #set( $test.e = ["123", "abc", $test.c])          访问时使用$test.e.get(0)就可以获得值"123"
    
    #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。

  • 相关阅读:
    MySQL-基本sql命令
    Java for LeetCode 203 Remove Linked List Elements
    Java for LeetCode 202 Happy Number
    Java for LeetCode 201 Bitwise AND of Numbers Range
    Java for LeetCode 200 Number of Islands
    Java for LeetCode 199 Binary Tree Right Side View
    Java for LeetCode 198 House Robber
    Java for LeetCode 191 Number of 1 Bits
    Java for LeetCode 190 Reverse Bits
    Java for LeetCode 189 Rotate Array
  • 原文地址:https://www.cnblogs.com/faunjoe88/p/5888270.html
Copyright © 2020-2023  润新知