6.1 WEBEVENTフォームを呼び出すWAMフォーム
WEBEVENTフォームを呼び出すための主な手段は、HandleEvent()というJavaScript関数です。WAMフォームからWEBEVENTフォームを呼び出すためのJavaScriptベースの手段として、それとよく似たHandleWebEvent()という関数も用意されています。
WAMフォームからWEBEVENTフォームを呼び出すには、以下のようにします。
1. 提供されているHandleWebEvent()という名前のJavaScript関数を使用します。
この関数を呼び出す方法は、HandleEvent()関数を呼び出す方法と同じです。
2. ウェブレットには、(Webroutineとは異なり) WEBEVENTに移動する追加のプロパティはありません。HandleWebEvent()は、ほとんどのウェブレットのpresubmit_jsプロパティから、またはユーザー定義のJavaScriptによって呼び出せます。例えば、次のようにonlick属性の値を設定して、JavaScriptを実行するように直接設定することも可能です。document.LANSA.SEARCH.onclick = "HandleWebEvent('PSLSYS', 'Browse', null, null, 'ASURNAME', 'ASTDRENTRY'
3. パラメータは、HandleWebEvent(Process, Webevent, Form, Target, "ASURNAME", "ASTDRENTRY", ...)のようになっていて、各フィールドに対応する可変数のパラメータの値をWEBEVENTに渡すことができます。Form以外のすべてのパラメータは文字列であり、Formは、実際のフォームDHTMLオブジェクト(document.MYFORMなど)にします。ここでフィールド名の前に接頭辞を1文字付けることが重要です。この接頭辞は、Alphanumericフィールドの場合はA、Packedフィールドの場合はP、Signedフィールドの場合はS、RDMLXフィールドの場合はQです。この接頭辞は必須で、これにより呼び出し対象のWEBEVENTが渡されるフィールド値を交換できるようになります。
4. このJavaScript関数は、指定のFormパラメータ (Formがnullの場合はデフォルトの"LANSA"フォーム) から各フィールドの値を取得し、一時的なフォームを作成し、URLに送信するその一時的なフォームに各フィールドとそれぞれの値を挿入し、URLに対するHTTP postを実行します。HandleWebEvent()にパラメータとして渡すフィールド名にはすべて、フィールドのタイプを示す1文字の接頭辞を付ける必要があることに注意してください。WAMのフィールド参照では接頭辞を必要としませんが、WEBEVENTファンクションは必要とします。したがって、このJavaScriptコードは、WAMフォームから指定のフィールド値を取得するときには1文字の接頭辞なしで取得しますが、WEBEVENTファンクションにフィールド名を送信するときには接頭辞付きで送信します。
5. その結果、指定のフィールド値が渡されたWEBEVENT LANSAファンクションが実行され、WEBEVENTページがブラウザーに表示されます。
例
WAMフォームからWEBEVENTフォームを開始し、情報を渡す例
WAMフォーム"Search "が WEBEVENT "Browse"を呼び出し、入力されたSURNAMEフィールドの値を渡すとします。
LANSAエディターの[詳細]タブで、検索ボタンのpresubmit_jsプロパティに'HandleWebEvent("PSLSYS", "Browse", null, null, "SURNAME", "STDRENTRY"); return false;'と入力します。
このページをブラウザーで実行したときに、検索ボタンをクリックすると、これがWEBEVENTに送信され、WEBEVENTの実行の終了時にブラウザーにそのページが表示されます。