He utilizado la llamada jQuery AJAX para enviar JSON como se documenta aquí en StackOverflowWicket AbstractAjaxBehavior con jQuery.ajax()
El problema es que no estoy reciba datos en el servidor. Puedo ver que la llamada hizo llegar el comportamiento ajax objetivo - pero en onRequest() método, el RequestCycle no dd contener ningún parámetro
Mi Código de garaje: Gracias
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();
Mi Javascript que invoca este método
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!")
}
});
Desde mi consola Firebug, puedo ver que el JSON POST se realizó con éxito y la alerta ("dokey completado okey dokey!") Se desencadenó.
El problema es que en Wicket AbstractAjaxBehavior no puede encontrar ningún parámetro en RequestCycle.
¿Hay algo que me falta? Lo curioso es que ejecuté esto es depurador, ya que no pude encontrar ningún parámetro. Esto parece un problema de codificación.
De Firebug, pude ver que se trataba de la llamada que se hizo
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=
De alguna manera, estos parámetros no apperd en el RequestCycle. Parece un problema de encodong. Algunas ideas ?
relacionadas: http: // stackoverflow .com/questions/5212537/implementation-javascript-events-to-wicket – RMorrisey