Java を使用して JavaScript 変数を取得しようとしています。解決に近づいていると思います。
パネル上の要素の幅を取得したいと考えています。これを実現するために、コールバックを追加してパラメーター (幅と高さ) を取得する動作をパネルに追加しました。
private class ImageBehavior extends AbstractDefaultAjaxBehavior {
@Override
protected void respond(AjaxRequestTarget target) {
//I receive a JavaScript call :)
StringValue width = getRequest().getRequestParameters().getParameterValue("width");
StringValue height = getRequest().getRequestParameters().getParameterValue("height");
}
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.getExtraParameters().put("width", "undef");
attributes.getExtraParameters().put("height", "undef");
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(OnDomReadyHeaderItem.forScript(getCallbackScript().toString()));
}
}
JavaScript では、次のコードが呼び出されます。
function callbackWicketNewImage(element) {
var wcall = Wicket.Ajax.get({ 'u': 'callbackUrl', 'ep' : {'width': element.width(), 'height': element.height()}});
}
js コードが呼び出されると、「respond」メソッドが呼び出されますが、幅と高さのパラメーターの値は変更されませんでした。彼らは「未定義」のままでした。