Java™ では、値が NULL であるストリング変数と値が空ストリングであるストリング変数を区別することができます。 同様に、リレーショナル・データベースでは、 値が NULL である列またはパラメーターと値が空ストリングである列またはパラメーターを区別することができます。 しかし、HTML ページでは、あるフォームで出力を表示したり、 データを入力したりする時に、NULL 値を空ストリングと区別するための一般的なメカニズムは定義されていません。
このような状態の扱いに役立つように、JSP SQL タグには nullToken 属性が備わっており、 これをストリングの指定に使用して列とパラメーターの NULL 値を表すことができます。 このストリングが NULL 値を表すのは、列とパラメーターの値が検索され、JSP 出力に書き出される時と JSP の中で列とパラメーターに値が設定される時です。
x:select、x:modify、または x:procedureCall アクション上で nullToken 属性を指定した場合は、この属性が該当オブジェクトの列とパラメーターの取得と設定の時点でデフォルトとして使用されます。 列またはパラメーターを取得または設定するそれぞれのアクション上の、この属性をオーバーライドすることもできます。 この属性がオブジェクトのレベルまたは値を取得または設定するアクションのレベルでのどちらかで指定されていない場合は、 デフォルトにより空ストリングを使用して NULL 値が表されることになります。
WebSphere® の中では JSP ファイル処理に一定の方法があるため、nullToken="" の指定を nullToken 属性の省略とデフォルトの獲得とを区別することはできません。 同様に、value="" の指定を属性 (デフォルトをもたない) の省略とを区別することはできません。 空ストリングが列またはパラメーターの値のどちらかとして、あるいは必要な NULL トークンとして指定できることは必要なことです。 したがって、上記の属性の中で空ストリングを表すために特殊値 &empty が用意されています。 NULL オブジェクト参照を表すために特殊値 &null も用意されています。 特殊値は HTML の中の文字エンティティーに類似したものであり、これを使用して他の方法では表現が難しいか、 不可能な値を指定することができます。
nullToken="&null" を指定した場合、 NULL 値は NULL オブジェクト参照として表されます。 NULL オブジェクト参照が WebSphere 3.5 の JSP 書き出しプログラムに渡されると、このプログラムは文字「NULL」を JSP 出力に書き出します。(以前のいくつかのバージョンでは、このプログラムは空ストリングを書き出していました。) 次に、文字「NULL」を列またはパラメーターの値として戻すと、データベースの中では、この文字が NULL ではなく、 文字「NULL」に設定されます。 データベースの中で NULL を設定するためには、スクリプトレットを使用して実際の NULL オブジェクト参照を渡すことが必要です。 このような往復処理を完了させるには追加作業が必要であるため、nullToken を &empty または文字「NULL」のいずれかとして指定するようなこともあります。
以下のアクションは、nullToken 属性 x:select、x:modify、x:procedureCall、x:getColumn、x:setColumn、x:column、x:getParameter、および x:parameter をもっています。