[Wicket-ja-user 621] AjaxFormSubmitBehavior#getPreconditionScript()が出力するjavascriptについて

Back to archive index

maga****@hagan***** maga****@hagan*****
2012年 2月 28日 (火) 20:59:39 JST


船田です。

Wicket1.5.4を使用しています。

フォームで入力された内容を即時にWicketで処理するために
AjaxFormSubmitBehaviorを使い、フォームのデータをAjaxでPOSTしています。
その中でブラウザやBehaviorの書き方によってAjaxが動作しないパターンがありました。

原因を調べていたところAjaxFormSubmitBehavior#getPreconditionScript()
が出力するjavascriptにthisが指定されていることがわかりました。

@Override
protected CharSequence getPreconditionScript()
{
      return "return Wicket.$$(this)&&Wicket.$$('" + getForm().getMarkupId() + "')";
}


当然のことながら、
javascriptのthisは文脈によって違うオブジェクトを返します。
バインドされているpreconditionがfalseを返す場合があり、
Ajaxの処理が実行されないまま
javascriptのwicketSubmitFormById()関数が終了します。

AjaxFormSubmitBehavior#getPreconditionScript()をオーバーライドして
trueを返すようなjavascriptを実装すれば回避できるのですが、根本的な解決ではない気がします。


本来、Wicket.$$(this) のthisは、何を想定しているのか?
この意図が汲み取れないでいます。

何かヒントになるようなことでもかまいませんのでご教授いただければと思います。




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