velocity语言之四

来源:互联网 发布:nginx 反向代理 跨域 编辑:程序博客网 时间:2024/06/05 23:07

8.Formal Reference Notation(正规引用格式注意事项) 

以上是简洁格式引用的介绍,规则的格式像下面,如你看到的变量名需要放到{}中

${mudSlinger}

${customer.Address}

${purchase.getTotal()}

大多数情况下,简洁格式引用足以满足使用,但有些情况下,必须使用正规格式引用

假设你构造的一个字符串中要包括有 $vice 变量的值你觉得以下两种写法会是同样的结果吗

1.Jack is a $vicemaniac.

2.Jack is a ${vice}maniac.

这样,Velocity就知你要的是 $vice而不是 $vicemaniac变量,正规引用格式一般用于在模板中直接调整字符串内容

9.Quiet Reference Notation(静态引用输出) 

Velocity遇到一个不能处理的引用时,一般他会直接输出这个引用$email的写法,页面上会看到的是$email,如下例,我们可以在$后面加上一个!号,那么就会输出空白:

<input type="text" name="email" value="$email"/>

<input type="text" name="email" value="$!email"/>

正式的写法是:

<input type="text" name="email" value="$!{email}"/>

10.Getting literal语义问题)

一般情况下,velocity使用$,#字符来标志它的声明,但有时,HTML中因为某种其它意图,也会写出这样的字符,我们讨论如何消除这种语义歧义问题

1.Currency(货币标志) 

如美元 $2.50!这样的写法出现到模板中VTL处理时是不会出错,会正确的输出$2.50!这个你想要的结果。为什么呢?一个合法的VTL标示符是以一个字母开头的,我们前面己说过

2.Escaping Valid VTL References(封装有效的引用) 

如下示,如果没有#set( $email = "foo" )这一行且java代码中Context对象中没有放放email对象,将直接输出$email.

#set( $email = "foo" )

$email

如果email己定义了 (比如它的值是 foo),而这里你却想输出 $email. 这样一个字符串,就需要使用转义字符\”. 

## The following line defines $email in this template:

#set( $email = "foo" )

$email

\$email

\\$email

\\\$email

上面的模板在web页面上的输出将是: 

foo

$email

\foo

\$email

但如果email并没有定义,我们这样写:

$email

\$email

\\$email

\\\$email

输出就原封不动了:

$email

\$email

\\$email

\\\$email

注意:当己定义变量和未定义变量一起输出时,会输出字面意思,如下便,$moon是未定义的: 

#set( $foo = "gibbous" )

$moon = $foo

输出到web页面中将是

 $moon = gibbou 

原创粉丝点击