最近,我一直在努力升级的使用检票1.4.18至6.2大Web应用程序。 我们有一个情况下,我们将创建JavaScript的变量来一拖内轨道定位和下拉列表。 这仅仅是代码的检票口边,因为JS的一贯努力并没有得到改变。
ListItem.add(new AbstractDefaultAjaxBehavior()
{
private static final long serialVersionUID = 1L;
@Override
public void onComponentTag(ComponentTag tag)
{
tag.put("ondrop", "var value = $(ui.item[0]).attr('hiddenvalue');"
+ this.getCallbackScript());
}
@Override
public final CharSequence getCallbackUrl()
{
return super.getCallbackUrl() + "&hiddenvalue' + value + '";
}
}
但是我遇到的问题是JavaScript变量不解析为值和目前正在采取的文本字符串:在getCallbackUrl(出埃及记“价值”而不是5)。 这是不是在检票口1.4.18的情况下,我不相信这个问题源自于我们移植到1.5.8。
最后,我们只是希望能够拉出来的值用
@Override
protected void respond(AjaxRequestTarget target)
{
getRequest().getRequestParameters().getParameterValue("hiddenvalue");
}
在这个有什么建议? 我希望我已经提供了足够的信息。 在此先感谢您的帮助。 一些这有点超出了我的知识,可以恐吓,不知道去哪里找。
检票阿贾克斯已完全重写检票6.请参阅此页的详细说明。
在你的情况,你应该使用新的AjaxRequestAttributes这样的:
@Override
protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.getExtraParameters().put("hiddenvalue", "value");
}
从请求中值的检索仍然工作和以前一样。
@Override
protected void respond(AjaxRequestTarget target)
{
getRequest().getRequestParameters().getParameterValue("hiddenvalue");
}
另一种更简洁的方法是使用回调函数
AbstractDefaultAjaxBehavior ajaxBehavior = new AbstractDefaultAjaxBehavior() {
@Override
protected void respond(AjaxRequestTarget target) {
String param1Value = getRequest().getRequestParameters().getParameterValue(AJAX_PARAM1_NAME).toString();
String param2Value = getRequest().getRequestParameters().getParameterValue(AJAX_PARAM2_NAME).toString();
System.out.println("Param 1:" + param1Value + "Param 2:" + param2Value);
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
String callBackScript = getCallbackFunction(CallbackParameter.explicit(AJAX_PARAM1_NAME), CallbackParameter.explicit(AJAX_PARAM2_NAME)).toString();
callBackScript = "sendToServer="+callBackScript+";";
response.render(OnDomReadyHeaderItem.forScript(callBackScript));
}
};
add(ajaxBehavior);
定义在JavaScript变种sendToServer功能的变量;
它将在DOM已准备就绪事件通过检票口与回调函数初始化
从JavaScript调用sendToServer(X,Y)的参数传递到服务器。
private static final String MY_PARAM = "myparam";
public static class SampleCallbackBehavior extends AbstractDefaultAjaxBehavior {
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(OnDomReadyHeaderItem.forScript("var myfunction : " + getCallbackFunction(CallbackParameter.explicit(MY_PARAM))));
}
@Override
protected void respond(AjaxRequestTarget target) {
StringValue paramValue = getComponent().getRequest().getRequestParameters().getParameterValue(MY_PARAM);
//TODO handle callback
}
}
在这之后,你应该只从JavaScript调用该函数
myfunction("paramValue");
文章来源: Wicket 6.2 AbstractDefaultAjaxBehavior getCallbackUrl no longer resolves JS variables