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について書きます。