[Wicket-ja-user 657] Re: jQueryのajaxメソッドをJava側で受信する方法

Back to archive index

浅野護 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の添付ファイルを保管しました...
다운로드 



Wicket-ja-user メーリングリストの案内
Back to archive index