【发布时间】:2013-08-24 13:12:19
【问题描述】:
我正在尝试使用 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-code 时,会调用 'respond' 方法,但 width 和 height 参数的值没有改变。他们仍然“未定义”。
【问题讨论】:
-
也许 element.width() 和 element.height() 返回 undef?你真的是在 JS 中更新页面上的这些值吗?
-
很遗憾没有。 element.width 和 element.height 方法确实返回正确的值。
标签: javascript ajax parameters callback wicket