Home   Single Page

forward 属性

forward="target_event_expr"forward="oringal_event=target_event_expr"

ここで target_event_expr はイベント表記です。イベント表記は特定のコンポーネントをターゲットとしたイベントを識別する目的で使用されます。これは次のフォーマット内の1つを使用できます。

event-nametarget-id.event-nameid1/id2/id3.event-name${el-expr}.event-name

これはイベントを forward するために使われます。ということは、特定のコンポーネントをターゲットとし、他のコンポーネントや他のイベント名を対象とするということです。これを forward 条件といいます。

次の例では、onCLick イベントをウィンドウのボタンに forward します。

<window id="w" use="MyWindow">
    ...    
    <button lable="Submit" forward="onClick=w.onOK"/>    
</window>

そして、次のように MyWindow クラス内で送信処理をハンドルできます。:

public class MyWindow extends Window {
    public void onOK() {    
        //handle the submission        
    }    
}

オリジナルのイベントはオプションで、省略でき onClick が想定されます。同様にターゲット ID もオプションで、省略時にはスペースオーナーが想定されます。それで、上記の例は次のように簡略化されます。

<window id="w" use="MyWindow">
    ...    
    <button lable="Submit" forward="onOK"/>    
</window>

複数のイベントを forward したいとき、これらの条件を forward 属性内でカンマ(,)で区切って指定することができます。

<textbox forward="onChanging=onUpdating, onChange=some.onUpdate"/>

Forward イベント

送信された forward イベントは org.zkoss.zk.ui.event.ForwardEventクラスのインスタンスです。元のイベントは getOrigin を使って取得できます。

Forward イベントに情報を渡す
Pass Information to the Forward Event

forward="orginalEvent=targetId1/targetId2.targetEvent(eventData)"

上記で記述したように、forward イベントにアプリケーション特有の情報を、括弧で囲んで forward 条件に追加する形で渡すことができます。情報は ForwardEvent クラスの getData メソッドを使用して取得できます。

<button forward="onCancel(abort)"/>

getData メソッドでは "abort"がリターンされるでしょう。もちろん、どのタイプのデータでも EL 表記で渡すことができます。

Forward 条件内の EL 表記
EL Expressions in the Forward Condition

forward="originalEvent=${el-targetPath}.targetEvent(${el-eventData})"

ターゲット ID/path や アプリケーション特有の情報 (aka., the event data)を指定するのに EL 表記を使用できます。

<button forward='${mainWnd}.onOK(${c:getProperty("status")})'/>

しかし、イベント名の指定では EL 表記を使用できません。