浅野護
asano****@gmail*****
2012年 4月 6日 (金) 23:52:56 JST
大変参考になりました。 お忙しいなか、ありがとうございました。 2012年4月6日15:17 Tsutomu YANO <t_yano****@me*****>: > こんにちは。矢野です。 > JavaOneで忙しくて調べる暇がなく、返事が遅れてしまいました。 > > > たしかに、調べてみたら、URL変わりますね。すみません、私はいつもWicket内蔵のwicket-ajax.jsを使っていたので、動作をよく分かってなかったです。 > > ちなみにjQueryとの連携ではなく、wicket-ajax.jsを使える前提であれば、AbstractAjaxBehaviorの代わりに、AbstractDefaultAjaxBehaviorを使い、getOnSuccessScript() > にAjax操作が成功したときのクライアント側操作(javascript)を書くことで、比較的簡単にAjaxのハンドリングができます。今回は > jQuery が前提でしたので、AbstractDefaultAjaxBehavior ではなく、AbstractAjaxBehavior > で説明しました。 > > AbstractAjaxBehaviorを貼り付けたページの動作を追いかけてみたら、 > > ・scheduleRequestHandlerAfterCurrent > で次のRequestHandlerを設定しないと、Behaviorが貼り付けられているページのリクエストハンドラが動く > ・ページはrender時に、自身のrenderCountを +1 する。 > ・getCallbackUrl() > の返すURLには、Behaviorが貼り付けられているページのrenderCountも含まれているので、これによりURLが変わる > > ということのようでした。 > > なので、仕組み上、おっしゃる動作をしますね。 > > レスポンスを返す必要がない場合は、 > > getRequestCycle().scheduleRequestHandlerAfterCurrent(new > EmptyRequestHandler()); > > とすれば、問題なく動作しました。 > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール: t_yano****@me***** > --------------------------------------------------- > > On 2012/03/30, at 22:24, 浅野護 wrote: > > > 返信ありがとうございます。 > > > > 教えていただいた1.の方法でJava側で受信できました。 > > > 以下のようなクラスを作成し、WebPageクラスにaddすることで、jQueryのajaxメソッドを呼び出すと、onRequestメソッドが呼び出されることが確認できました。 > > > ただし、onRequestメソッドでサンプルソースのように何か返さないと、getCallbackUrlの値が変わってしまい、再度jQueryのajaxメソッドを呼び出してもonResponseメソッドが呼び出されません。 > > これは正しい動作でしょうか? > > > > public class MyAjaxBehavior extends AbstractAjaxBehavior { > > private static final long serialVersionUID = 1L; > > > > @Override > > public void onRequest() { > > Map<String, Object> retMap = new HashMap<String, > Object>(); > > retMap.put("total", 10); > > RequestCycle.get().scheduleRequestHandlerAfterCurrent(new > TextRequestHandler("application/json", "UTF-8", JSON.encode(retMap))); > > } > > > > @Override > > public void renderHead(Component component, IHeaderResponse > response) { > > super.renderHead(component, response); > > response.renderJavaScript("var behaviorUrl = '" + > getCallbackUrl() + "';", "behaviorUrl"); > > } > > } > > > > よろしくお願いいたします。 > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > -------------- next part -------------- HTMLの添付ファイルを保管しました... 다운로드