global

Page Contents

Synopsis

<#global name=value>
or
<#global name1=value1 name2=value2 ... nameN=valueN>
or
<#global name>
  capture this
</#global>

Where:

  • name:变量的名称。它不是表达。但是,它可以写为字符串 Literals,如果变量名称包含保留字符(例如<#global "foo-bar" = 1>),则很有用。请注意,此字符串 Literals 不会扩展插值(如"${foo}")。

  • =:赋值运算符,也可以是速记赋值运算符之一(+++=等),就像分配指令一样,

  • value:要存储的值。表达。

Description

该指令类似于assign,但是创建的变量将在所有namespaces中可见,并且不会在任何命名空间内。就像您要创建(或替换)数据模型的变量一样。因此,该变量是全局变量。如果数据模型中已经存在相同名称的变量,则该变量将被使用此伪指令创建的变量隐藏。如果当前名称空间中已经存在具有相同名称的变量,则它将隐藏使用global指令创建的变量。

例如,使用<#global x = 1>创建的变量在所有命名空间中均以x可见,除非另一个名为x的变量将其隐藏(例如,您创建为<#assign x = 2>的变量)。在这种情况下,您可以像${.globals.x}一样使用special variable globals。注意,使用globals,您会看到所有可全局访问的变量;不仅是使用global指令创建的变量,还包括数据模型的变量。

自定义 JSP 标记用户的注意事项:使用此伪指令创建的变量集与 JSP 页面范围相对应。这意味着,如果自定义 JSP 标记想要获取 page-scope 属性(page-scope bean),则在当前名称空间中具有相同名称的变量不会从 JSP 标记的角度隐藏它。