20.2 ADD_ATTRIBUTEファンクションのシグネチャ1

このファンクションは、属性と、その属性の二重引用符で囲まれたエスケープされたテキストを戻します。

注意:

このファンクションは、HTMLタグはエスケープしません。HTMLタグがJavaScriptオブジェクトの属性の割当てに悪影響を与えないようにするだけです。XSS(クロスサイト・スクリプティング)攻撃を防ぐには、SYS.HTF.ESCAPE_SCをコールして、HTMLページに文字列を差し込む際に、埋め込まれたJavaScriptコードが実行されるのを防ぐ必要もあります。

構文

APEX_JAVASCRIPT.ADD_ATTRIBUTE (
    p_name       IN VARCHAR2,
    p_value      IN VARCHAR2,
    p_omit_null  IN BOOLEAN:=TRUE,
    p_add_comma  IN BOOLEAN:=TRUE)
RETURN VARCHAR2;

パラメータ

表20-2 ADD_ATTRIBUTEのシグネチャ1のパラメータ

パラメータ 説明

p_name

JavaScriptオブジェクト属性の名前。

p_value

JavaScriptオブジェクト属性に割り当てられるテキスト。

p_omit_null

TRUEを設定すると、p_valueが空の場合にNULL.が戻されます。

p_add_comma

TRUEを設定すると、戻される値の後にカンマが追加されます。

addEmployee JavaScriptファンクションへのコールを追加し、様々な属性値を持つJavaScriptオブジェクトを渡します。このコールの出力は、次のようになります。

addEmployee(
  {"FirstName":"John",
   "LastName":"Doe",
   "Salary":2531.29,
   "Birthday":new Date(1970,1,15,0,0,0),
   "isSalesman":true
  });

最後の属性では、False(p_omit_null)とFALSE(p_add_comma)という組合せのパラメータを使用して、最後の属性が常に生成されるようにする必要があります。これによって、後続のカンマを追加する必要があるかどうかについて、他のパラメータを調べる必要がなくなります。

apex_javascript.add_onload_code (
    'addEmployee('||
        '{'||
        apex_javascript.add_attribute('FirstName',  sys.htf.escape_sc(l_first_name))||
        apex_javascript.add_attribute('LastName',   sys.htf.escape_sc(l_last_name))||
        apex_javascript.add_attribute('Salary',     l_salary)||
        apex_javascript.add_attribute('Birthday',   l_birthday)||
        apex_javascript.add_attribute('isSalesman', l_is_salesman, false, false)||
        '});' );