You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Russell Morrisey <Ru...@missionse.com> on 2011/03/09 19:40:45 UTC
alert error message for a missing javascript resource?
wicket 1.4.9
When a wicket behavior tries to load a javascript resource from the response, I want to create some error handler (a javascript alert) that runs if the javascript package resource is not found.
I set an IAjaxCallDecorator which spits out a javascript string on failure, but the failure decoration isn't being used in the case where the script resource returns a 404. My link:
return new AjaxFallbackLink(linkId) {
protected IAjaxCallDecorator getAjaxCallDecorator() {
CompositeAjaxCallDecorator decorator = new CompositeAjaxCallDecorator();
decorator.setFailureDecorator(new SimpleScriptDecorator(
"alert('An error occurred communicating with the server. Please contact a system administrator.');"));
return decorator;
}
...
};
I can see that my CompositeAjaxCallDecorator generates the event handler correctly in the output, so I'm not going to post the code for that class. The output:
<a onclick="var wcall=wicketAjaxGet('../?wicket:interface=:6:contentPanel:tabPanel:tabs-container:tabs:1:link::IBehaviorListener:0:1',function() { }.bind(this),function() {
alert('An error occurred communicating with the server. Please contact an AIMS administrator.');}.bind(this), function() {return Wicket.$('link49c') != null;}.bind(this));return !wcall;" id="link49c" href="../?wicket:interface=:6:contentPanel:tabPanel:tabs-container:tabs:1:link::ILinkListener::"><span>Import</span></a>
When I click on the link, the wicket ajax debug shows:
INFO: Initiating Ajax GET request on ../resources/com.csc.aims.wicket.behaviors.calldecorator.ClearFeedbackScriptDecorator/ClearFeedbackScriptDecorator.js
INFO: Invoking pre-call handler(s)...
INFO: focus removed from link49c
ERROR: Received Ajax response with code: 404
INFO: Invoking post-call handler(s)...
INFO: Invoking failure handler(s)...
INFO: focus set on link49c
INFO: focus removed from link49c
I did some debugging, and noticed that in wicket-ajax.js, the script element is loaded from the response using a second ajax request:
1613 // we need to schedule the request as timeout
1614 // calling xml http request from another request call stack doesn't work
1615 window.setTimeout(function() {
1616 var req = new Wicket.Ajax.Request(src, onLoad, false, false);
1617 req.debugContent = false;
1618 if (Wicket.Browser.isKHTML())
1619 // konqueror can't process the ajax response asynchronously, therefore the
1620 // javascript loading must be also synchronous
1621 req.async = false;
1622 // get the javascript
1623 req.get();
1624 },1);
This second ajax request doesn't specify a failure handler, so I'm thinking that he's the culprit.
How can I fix this?
Thanks,
________________________________
RUSSELL E. MORRISEY
Programmer Analyst Professional
Mission Solutions Engineering, LLC
| Russell.Morrisey@missionse.com | www.missionse.com<http://www.missionse.com/>
304 West Route 38, Moorestown, NJ 08057-3212
________________________________
This is a PRIVATE message. If you are not the intended recipient, please delete without copying and kindly advise us by e-mail of the mistake in delivery.
NOTE: Regardless of content, this e-mail shall not operate to bind MSE to any order or other contract unless pursuant to explicit written agreement or government initiative expressly permitting the use of e-mail for such purpose.