Details
Description
We are having problems on Wicket 1.4.x with and "AJAX function" processEvaluation... and I see the code is practically the same at 6.x. So, let's bring the subject to the list...
Our problem is that after evaluating some expressions with errors, screen "freezes" because post-call handlers are not called. Problem seems to be related to the code.
// test if the javascript is in form of identifier|code
// if it is, we allow for letting the javascript decide when the rest of processing will continue
// by invoking identifier();
var res = text.match(new RegExp("^([a-z|A-Z_][a-z|A-Z|0-9_]*)\\|((.|\\n)*)$"));
if (res !== null) {
var f = jQuery.noop;
text = "f = function(" + res[1] + ") {" + res[2] + "};";
try {
// do the evaluation
eval(text);
f(notify);
} catch (exception) {
Wicket.Log.error("Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: " + exception + ", text: " + text);
}
}
In case of error. Shouldn't it be
try {
// do the evaluation
eval(text);
f(notify);
} catch (exception) {
Wicket.Log.error("Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: " + exception + ", text: " + text);
notify();
}
So that next steps in processing get called. The above solves or freezing problem in case of error
Our problem is that after evaluating some expressions with errors, screen "freezes" because post-call handlers are not called. Problem seems to be related to the code.
// test if the javascript is in form of identifier|code
// if it is, we allow for letting the javascript decide when the rest of processing will continue
// by invoking identifier();
var res = text.match(new RegExp("^([a-z|A-Z_][a-z|A-Z|0-9_]*)\\|((.|\\n)*)$"));
if (res !== null) {
var f = jQuery.noop;
text = "f = function(" + res[1] + ") {" + res[2] + "};";
try {
// do the evaluation
eval(text);
f(notify);
} catch (exception) {
Wicket.Log.error("Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: " + exception + ", text: " + text);
}
}
In case of error. Shouldn't it be
try {
// do the evaluation
eval(text);
f(notify);
} catch (exception) {
Wicket.Log.error("Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: " + exception + ", text: " + text);
notify();
}
So that next steps in processing get called. The above solves or freezing problem in case of error
Issue Links
- is broken by
-
WICKET-4881 IE 8 : error when handling Wicket Ajax Response
Can you share your ideas in the mailing lists ? With as much details as possible.
If you are not subscribed please send them to mgrigorov at apache org and I'll send them on behalf of you.
Or see https://cwiki.apache.org/confluence/display/WICKET/Ideas+for+Wicket+7.0#IdeasforWicket7.0-Maketransitionspossible%2FeasywhenreplacingcomponentsusingAjax%2FPush - it sounds like what you provide.