Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Incomplete
-
5.3.2
-
None
Description
Vast improvements to the ajax and javascript rendering API's have made things much easier to use in tapestry 5.2+, however I still think there is room for improvement. I find I can't work without this 'helper' service I designed to standardise script call rendering between xhr and non-xhr requests. The main motivation/benefit is that a set of functionality can now be called in either (xhr/non-xhr) context and still work. It also has the benefit of building the necessary JavaScriptCallback in the xhr context. In my opinion, this makes user code much tidier:
public class JavascriptHelperImpl implements JavascriptHelper
{
@Inject
private AjaxResponseRenderer ajaxResponseRenderer;
@Inject
private Request request;
@Inject
private JavaScriptSupport jsSupport;
@Override
public void addScript(final String format, final Object... args)
{
if (!request.isXHR())
ajaxResponseRenderer.addCallback(new JavaScriptCallback()
{
@Override
public void run(JavaScriptSupport javascriptSupport)
});
}
}
There may or may not be additional opportunity with the other methods such as 'addInitializerCall' but I haven't needed to.
This code is free for anyone (including apache/tapestry) to use.
Attachments
Issue Links
- relates to
-
TAP5-1870 javascript added while in the render phase of a component from an ajax request is never executed
- Closed