概要
<#global name=value>
或<#global name1=value1 name2=value2 ... nameN=valueN>
或<#global name> capture this </#global>
这里:
-
name
:变量的名称。 它不是表达式。但它可以被写作是字符串形式,如果变量名包含保留字符这是很有用的, 比如<#global "foo-bar" = 1>
。 注意这个字符串没有扩展插值(如"${foo}"
)。 -
=
:赋值操作符,也可以简写的赋值操作符之一 (++
,+=
,等...),和assign
指令 相似 -
value
:存储的值,是表达式。
描述
该指令和 assign
相似,
但是被创建的变量在所有的 命名空间 中都可见,
但又不会存在于任何一个命名空间之中。精确地说,正如你会创建
(或替换)一个数据模型变量。因此,这个变量是全局的。如果在数据模型中,
一个相同名称的变量存在的话,它会被使用该指令创建的变量隐藏。
如果在当前的命名空间中,一个相同名称的变量存在的话,
那么会隐藏由 global
指令创建的变量。
例如,用 <#global x = 1>
创建一个变量,
那么在所有命名空间中 x
都可见,
除非另外一个称为 x
的变量隐藏了它
(比如你已经用 <#assign x = 2>
创建了一个变量)。
这种情形下,你可以使用 特殊变量
globals
,比如 ${.globals.x}
。请注意,
使用 globals
你看到所有全局可访问的变量;
不但由 global
指令创建的变量,而且是数据模型中的变量。
自定义JSP标记的用户请注意:用这个指令创建的变量集合和JSP页面范围对应。 这就意味着,如果自定义JSP标记想获得一个页面范围的属性(page-scope bean), 在当前命名空间中一个相同名称的变量,从JSP标记的观点出发,将不会隐藏。