jQueryプラグインで作成した部品でサーバ通信がしたい(1)

過去のエントリで、マスカットでjQueryプラグインを利用する方法について書きましたが、サーバと通信する方法についてはまだ書いていませんでした。
昨日、「サーバ通信するのはどうやってやったらいいの?」という問い合わせがあったので、検証してみました。
マスカットの要求電文XML/応答電文XMLでは、大きく分けて2つありまして、単一値を送受信するのか、コレクションを送受信するのかのどちらかになります。
どちらの場合も、イベント定義XMLに記載する内容で電文の形式が決まります。

  • 単一値を送信する場合
  <component id="cal">
    <event id="onclick" remoteUrl="testServlet" async="false">
      <param rootNode="request">
        <source obj="cal" node="ename" sendBlankElement="true"/>
      </param>
    </event>
  </component>

送信電文の例

<?xml version="1.0" encoding="UTF-8"?>
<request>
  <ename>takahashi</ename>
</request>
  • コレクションを送信する場合
<component id="cal">
  <event id="onclick" remoteUrl="testServlet" async="false" >
    <param rootNode="request">
      <source obj="cal" node="rows" childNode="SearchTest">
        <bind node="name" fromkey="name"/>
      </source>
    </param>
  </event>
</component>

送信電文の例

<?xml version="1.0" encoding="UTF-8"?>
 <request>
  <rows>
   <SearchTest><name>takahashi</name></SearchTest>
   <SearchTest><name>aoki</name></SearchTest>
   <SearchTest><name>suzuki</name></SearchTest>
  </rows>
</request>

これらは、どちらの場合でもラッパークラスに定義したdefaultGetterを経由して値が取得され、自動的にXML電文に変換されます。
いま、ラッパークラスのdefaultGatterプロパティにgetValueが指定されていたとして、ラッパークラスのgetValueの実装が以下の通りだとすると、単一値を送信するイベント定義XMLになっていれば、上記のような単一値を送信する場合のXML電文になります。

getValue: function() {
  return "takahashi";
}

明日は、コレクションの場合の実装とteleTypeについて書きます。