Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1861

Wrap javascript call rendering apis for interoperability and convenience

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Incomplete
    • 5.3.2
    • None
    • tapestry-core

    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())

      { jsSupport.addScript(format, args); return; }

      ajaxResponseRenderer.addCallback(new JavaScriptCallback()
      {
      @Override
      public void run(JavaScriptSupport javascriptSupport)

      { javascriptSupport.addScript(format, args); }

      });
      }
      }

      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

          Activity

            People

              hlship Howard Lewis Ship
              paul.stanton Paul Stanton
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: