在 Java™ 中,可以将值为空的字符串变量与值为空字符串的字符串变量区分开。同样,在关系数据库中,可以将值为空的列或参数与值为空字符串的列或参数区分开。然而,在 HTML 页中,当查看输出或在表单中输入数据时,没有定义用于区分空值与空字符串的通用机制。
为了帮助处理这种情况,JSP SQL 标记提供了一个 nullToken 属性,可使用此属性来指定字符串以表示列和参数的空值。此字符串既表示检索列或参数值和将列或参数值写至 JSP 输出时的空值,也表示在 JSP 中对列或参数设置值时的空值。
如果在 x:select、x:modify 或 x:procedureCall 操作上指定 nullToken 属性,则当获取和设置该对象的任何列和参数时,它作为缺省值。还可以在每一个获取或设置列或参数的操作上覆盖此属性。如果没有在对象级别或者获取或设置值的操作的级别指定此属性,则缺省情况是使用空字符串来表示空值。
由于在 WebSphere® 中处理 JSP 文件的方式所具有的特点,不能将指定 nullToken="" 的操作与省略 nullToken 属性并采用缺省值区分开。同样,不能将指定 value="" 的操作与省略此属性(没有缺省值)区分开。由于您需要能够指定空字符串来作为列或参数的值或作为期望的空标记,所以,我们提供了特殊值 &empty 来表示这些属性中的空字符串。我们还提供了特殊值 &null 来表示空对象引用。这些特殊值与 HTML 中的字符实体类似,它们使您能指定难以表达或不可能以其他方式表达的值。
如果指定 nullToken="&null",则空值以空对象引用形式表示。当将空对象引用传送至 WebSphere 3.5 的 JSP 输出写程序时,它将字符“null”写至 JSP 输出。在一些较早的版本中, 它写空字符串。之后,如果将字符“null”作为列或参数的值传送回,则会在数据库中将其设置为字符“null”,而不是一个空值。必须使用 scriptlet 来传送实际的空对象引用才能在数据库中设置空值。由于完成这一个来回增加了工作量,所以,您更可能想要将 nullToken 指定为 &empty 或字符“null”。
下列操作具有 nullToken 属性:x:select、x:modify、x:procedureCall、x:getColumn、x:setColumn、x:column、x:getParameter 和 x:parameter。