Wicket 1.x では、AjaxEventBehavior を使用して、マウス座標を提供する CallBackScript を配置しました。これは私がやったことです: (getEventX() と getEventY() は JavaScript 関数です)
myObject.add(new AjaxEventBehavior("onClick") {
private static final long serialVersionUID = 1L;
@Override
protected CharSequence getCallbackScript() {
return generateCallbackScript("wicketAjaxGet('" + getCallbackUrl()
+ "&x=' + getEventX(this, event) + '&y=' + getEventY(this, event)");
}
@Override
protected void onEvent(AjaxRequestTarget target) {
final Request request = MyPage.this.getRequest();
final IRequestParameters parameters = request.getRequestParameters();
final int x = Integer.parseInt(parameters.getParameterValue("x").toString("0"));
final int y = Integer.parseInt(parameters.getParameterValue("y").toString("0"));
それは非常にうまくいきました。しかし、Wicket 6.x でこれを行う方法がわかりません。
Ajax リンクの動作方法が変更されたことは理解しています。そこで、以前と同じ方法で getCallBackUrl を使用してみました。しかし、それはうまくいきませんでした。
public CharSequence getCallbackUrl() {
final CharSequence callBackUrl = super.getCallbackUrl();
return callBackUrl + "&x=' + getEventX(this, event) + '&y=' + getEventY(this, event)";
}
生成された HTML を見ると、ajax リンクが次のようになっていることがわかります。
Wicket.Ajax.ajax({"u":"../page?5-2.IBehaviorListener.2-cityMap&x=' + getEventX(this, event) + '&y=' + getEventY(this, event)","e":"click","c":"cityMap","i":"id29--ajax-indicator"});;
良さそうに見えますが、うまくいきません。
ウィケット6以降、何か間違ったことをしていると確信していますが、正しい方法で行う方法がわかりません。
どんな提案でも大歓迎です。
乾杯ラインハルト