Я использовал вызов JQuery AJax для отправки JSON, как описано здесь в StackOverflow
Проблема в том, что я не получаю никаких данных на сервере.Я вижу, что вызов достиг целевого поведения ajax - но в методе onRequest (), RequestCycle dd не содержит никаких параметров
Мой код Wicket:
AbstractAjaxBehavior ajaxSaveBehaviour = new AbstractAjaxBehavior(){
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
public void onRequest()
{
//get parameters
final RequestCycle requestCycle = RequestCycle.get();
final PageParameters pageParameters = new PageParameters(requestCycle.getRequest().getParameterMap());
logger.info(" I have received something 1");
for(String pkey: requestCycle.getRequest().getParameterMap().keySet()){
String[] valArry= requestCycle.getRequest().getParameterMap().get(pkey);
StringBuffer sb = new StringBuffer();
for(String s: valArry) sb.append(s).append(" , ");
logger.info("pk :"+ pkey + " = "+ sb.toString());
}
//do something using nice json library to produce a string of json
logger.info(" I have received something 2");
for(String key: pageParameters.keySet()){
Object o= pageParameters.get(key);
logger.info("received key : "+ key + " = " +o.toString());
}
String data="ok";
requestCycle.setRequestTarget(new StringRequestTarget("application/json", "utf-8", data));
}
};
add(ajaxSaveBehaviour);
String callBackURL= ajaxSaveBehaviour.getCallbackUrl().toString();
Мой Javascript, которыйвызывает этот метод
console.log(" call back url :"+ callBackURL);
$.ajax({
url: callBackURL,
type: 'post',
cache: false,
data:JSON.stringify(ccbArry[0]),
contentType: 'application/json',
dataType: 'json',
complete: function() {
alert(" completed okey dokey!")
}
});
С моей консоли Firebug я вижу, что JSON POST был успешно выполнен, и срабатывает предупреждение («завершено, да ладно!»).
Проблема в том, что в Wicket AbstractAjaxBehavior не удается найти какие-либо параметры в RequestCycle.
Есть что-то, что мне не хватает?Самое смешное, что я запустил этот отладчик, так как я не смог найти ни одного параметра.Это похоже на проблему кодировки.
Из Firebug я мог видеть, что это был вызов, который был сделан
http://localhost:8080/mywebapp-web-1.0-SNAPSHOT/?wicket:interface=:0::IActivePageBehaviorListener:0:&wicket:ignoreIfNotActive=true&%7B%22type%22%3A9504%2C%22sourceNewsClipBean%22%3A%7B%22type%22%3A9503%2C%22id%22%3A%224cf05752acc1d6aebface86d%22%2C%22typeString%22%3A%22NEWSCLIP_TYPE%22%7D%2C%22startOffset%22%3A%22195%22%2C%22clipDuration%22%3A%22297%22%7D=
Каким-то образом эти параметры не добавляются в RequestCycle.Это похоже на проблему кодона.Есть идеи?