Tapestry 5
  1. Tapestry 5
  2. TAP5-765

Included JavaScript libraries are not properly uniqued within an Ajax partial update response

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.1.0.5
    • Fix Version/s: 5.2.0
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      Noticed this while working on a lab; a component that is repeatedly rendered will result in a long series of duplicated scripts being included in the response. The code that ensures that a given JS file is included only once is broken in some way.

      {"scripts":["/assets/ctx/ajax-1.0-SNAPSHOT/js/editkeywords.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox

      /modalbox.js","/assets/scriptaculous/5.1.0.5/builder.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/editkeywords

      .js","/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.js","/assets/scriptaculous/5.1.0.5/builder.js"

      ,"/assets/ctx/ajax-1.0-SNAPSHOT/js/editkeywords.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox

      .js","/assets/scriptaculous/5.1.0.5/builder.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/editkeywords.js","

      /assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.js","/assets/scriptaculous/5.1.0.5/builder.js","/assets

      /ctx/ajax-1.0-SNAPSHOT/js/editkeywords.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.js","

      /assets/scriptaculous/5.1.0.5/builder.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/editkeywords.js","/assets

      /ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.js","/assets/scriptaculous/5.1.0.5/builder.js","/assets/ctx

      /ajax-1.0-SNAPSHOT/js/editkeywords.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.js","/assets

      /scriptaculous/5.1.0.5/builder.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/editkeywords.js","/assets/ctx/ajax-1

      .0-SNAPSHOT/js/modalbox/modalbox.js","/assets/scriptaculous/5.1.0.5/builder.js","/assets/ctx/ajax-1.0-SNAPSHOT

      /js/editkeywords.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.js","/assets/scriptaculous/5

      .1.0.5/builder.js","/assets/ctx/ajax-1.0-SNAPSHOT/js/editkeywords.js","/assets/ctx/ajax-1.0-SNAPSHOT

      /js/modalbox/modalbox.js","/assets/scriptaculous/5.1.0.5/builder.js"],"script":"Tapestry.init(

      {\"editKeywords \":[[\"edit-122529b387e\",\"keywords-122529b387e\"],[\"edit-122529b387e_0\",\"keywords-122529b387e_0 \"],[\"edit-122529b387e_1\",\"keywords-122529b387e_1\"],[\"edit-122529b387e_2\",\"keywords-122529b387e_2 \"],[\"edit-122529b387e_3\",\"keywords-122529b387e_3\"],[\"edit-122529b387e_4\",\"keywords-122529b387e_4 \"],[\"edit-122529b387e_5\",\"keywords-122529b387e_5\"],[\"edit-122529b387e_6\",\"keywords-122529b387e_6 \"],[\"edit-122529b387e_7\",\"keywords-122529b387e_7\"],[\"edit-122529b387e_8\",\"keywords-122529b387e_8 \"]]}

      );\n","stylesheets":[

      {"href":"/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.css"}

      ,

      {"href":" /assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.css"}

      ,

      {"href":"/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox /modalbox.css"}

      ,

      {"href":"/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.css"}

      ,

      {"href":"/assets/ctx /ajax-1.0-SNAPSHOT/js/modalbox/modalbox.css"}

      ,

      {"href":"/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox .css"}

      ,

      {"href":"/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.css"}

      ,

      {"href":"/assets/ctx/ajax-1 .0-SNAPSHOT/js/modalbox/modalbox.css"}

      ,

      {"href":"/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.css" }

      ,

      {"href":"/assets/ctx/ajax-1.0-SNAPSHOT/js/modalbox/modalbox.css"}

      ],"content":"<div><h2>Recent Postings

      <\/h2><div class='post'><h3>We are now using the Autocomplete mixin<\/h3><p class='meta'>\nPosted by

      \n<a href='/blogger/hlship'>\nhlship\n<\/a>\non\nJul 2, 2009 1:42:33 PM\n- \n<a href='/post/podium/we_are_now_using_the_autocomplete_mixin'

      >\nFULL LISTING\n<\/a>\n- \nno\ncomments\n<\/p><\/div><div id='keywords-122529b387e' class='keywords'

      ><span class='keyword'><a href='/blog/keyword/podium/yui'>yui\n<\/a><\/span><span class='keyword'><a

      href='/blog/keyword/podium/screencast'>screencast\n<\/a><\/span><span class='keyword'><a href='/blog

      /keyword/podium/success'>success\n<\/a><\/span><a id='edit-122529b387e' title='Click to edit keywords'

      href='/blog/index.outputposting.edit/16?t:ac=podium'><img alt='Edit Keywords' src='/assets/ctx/ajax-1

      .0-SNAPSHOT/images/pencil.png'/><\/a><\/div><br style='clear: both;'/><div class='entry'>Also, the new

      YUI-based rich text area.  Turns out FCKEditor was behaving poorly.   <\/div><div

      class='post'><h3>Still setting up for the screen capture<\/h3><p class='meta'>\nPosted by\n<a href='

      /blogger/hlship'>\nhlship\n<\/a>\non\nJul 2, 2009 1:34:35 PM\n- \n<a href='/post/podium/still_setting_up_for_the_screen_capture'

      >\nFULL LISTING\n<\/a>\n- \nno\ncomments\n<\/p><\/div><div id='keywords-122529b387e_0' class='keywords'

      ><span class='keyword'><a href='/blog/keyword/podium/yui'>yui\n<\/a><\/span><span class='keyword'><a

      href='/blog/keyword/podium/success'>success\n<\/a><\/span><a id='edit-122529b387e_0' title='Click to

      edit keywords' href='/blog/index.outputposting.edit/15?t:ac=podium'><img alt='Edit Keywords' src='/assets

      /ctx/ajax-1.0-SNAPSHOT/images/pencil.png'/><\/a><\/div><br style='clear: both;'/><div class='entry'>Still

      setting up for the screen capture. <em>YUI Editor<\/em> is looking quite nice. It's slightly different

      from FCKEditor in that it doesn't implcitly surround the content provided in a <p> element.<\

      /div><div class='post'><h3>Now using YUI<\/h3><p class='meta'>\nPosted by\n<a href='/blogger/hlship'

      >\nhlship\n<\/a>\non\nJul 2, 2009 10:55:33 AM\n- \n<a href='/post/podium/now_using_yui'>\nFULL LISTING

      \n<\/a>\n- \nno\ncomments\n<\/p><\/div><div id='keywords-122529b387e_1' class='keywords'><span class='keyword'

      ><a href='/blog/keyword/podium/yui'>yui\n<\/a><\/span><span class='keyword'><a href='/blog/keyword/podium

      /success'>success\n<\/a><\/span><a id='edit-122529b387e_1' title='Click to edit keywords' href='/blog

      /index.outputposting.edit/14?t:ac=podium'><img alt='Edit Keywords' src='/assets/ctx/ajax-1.0-SNAPSHOT

      /images/pencil.png'/><\/a><\/div><br style='clear: both;'/><div class='entry'>Abandoned <strong>FCKEditor

      ?<\/strong> for <strong>YUI Editor<\/strong>.<\/div><div class='post'><h3>Worked!<\/h3><p class='meta'

      >\nPosted by\n<a href='/blogger/hlship'>\nhlship\n<\/a>\non\nJul 1, 2009 4:08:41 PM\n- \n<a href='/post

      /podium/worked'>\nFULL LISTING\n<\/a>\n- \nno\ncomments\n<\/p><\/div><div id='keywords-122529b387e_2'

      class='keywords'><span class='keyword'><a href='/blog/keyword/podium/success'>success\n<\/a><\/span

      ><span class='keyword'><a href='/blog/keyword/podium/ajax'>ajax\n<\/a><\/span><a id='edit-122529b387e_2'

      title='Click to edit keywords' href='/blog/index.outputposting.edit/13?t:ac=podium'><img alt='Edit Keywords'

      src='/assets/ctx/ajax-1.0-SNAPSHOT/images/pencil.png'/><\/a><\/div><br style='clear: both;'/><div class

      ='entry'><p>Check in the database and the data looks to have gone in fine.<\/p><\/div><div class='post'

      ><h3>First experiment with keywords<\/h3><p class='meta'>\nPosted by\n<a href='/blogger/hlship'>\nhlship

      \n<\/a>\non\nJul 1, 2009 4:08:00 PM\n- \n<a href='/post/podium/first_experiment_with_keywords'>\nFULL

      LISTING\n<\/a>\n- \nno\ncomments\n<\/p><\/div><div id='keywords-122529b387e_3' class='keywords'><span

      class='keyword'><a href='/blog/keyword/podium/keywords'>keywords\n<\/a><\/span><span class='keyword'

      ><a href='/blog/keyword/podium/ajax'>ajax\n<\/a><\/span><span class='keyword'><a href='/blog/keyword

      /podium/labs'>labs\n<\/a><\/span><a id='edit-122529b387e_3' title='Click to edit keywords' href='/blog

      /index.outputposting.edit/12?t:ac=podium'><img alt='Edit Keywords' src='/assets/ctx/ajax-1.0-SNAPSHOT

      /images/pencil.png'/><\/a><\/div><br style='clear: both;'/><div class='entry'><p>This is the first attempt

      to store keywords in the database. I've implemented a KeywordDAO service and am collecting the keywords

      (as text) on page BlogIndex.<\/p><\/div><div class='post'><h3>Setting up the Grid lab<\/h3><p class

      ='meta'>\nPosted by\n<a href='/blogger/hlship'>\nhlship\n<\/a>\non\nAug 28, 2008 3:13:43 PM\n- \n<a href

      ='/post/podium/setting_up_the_grid_lab'>\nFULL LISTING\n<\/a>\n- \n1\ncomments\n<\/p><\/div><div id='keywords-122529b387e_4'

      class='keywords'><a id='edit-122529b387e_4' title='Click to edit keywords' href='/blog/index.outputposting

      .edit/11?t:ac=podium'><img alt='Edit Keywords' src='/assets/ctx/ajax-1.0-SNAPSHOT/images/pencil.png'

      /><\/a><\/div><br style='clear: both;'/><div class='entry'><p>Starting to set up a new lab nominally

      about the <strong>Grid<\/strong> component, but will touch on a bunch of other areas as well.<\/p><

      \/div><div class='post'><h3>Debugging a problem with posting<\/h3><p class='meta'>\nPosted by\n<a href

      ='/blogger/hlship'>\nhlship\n<\/a>\non\nJul 9, 2008 7:13:52 PM\n- \n<a href='/post/podium/debugging_a_problem_with_posting'

      >\nFULL LISTING\n<\/a>\n- \nno\ncomments\n<\/p><\/div><div id='keywords-122529b387e_5' class='keywords'

      ><a id='edit-122529b387e_5' title='Click to edit keywords' href='/blog/index.outputposting.edit/10?t

      :ac=podium'><img alt='Edit Keywords' src='/assets/ctx/ajax-1.0-SNAPSHOT/images/pencil.png'/><\/a><\/div

      ><br style='clear: both;'/><div class='entry'><p>Now that I've completed the mungTitle() code in BlogIndex

      , I'm getting a <em>NullPointerException<\/em>.<\/p><\/div><div class='post'><h3>Session 3 : Components

      <\/h3><p class='meta'>\nPosted by\n<a href='/blogger/hlship'>\nhlship\n<\/a>\non\nJul 7, 2008 4:26:43

      PM\n- \n<a href='/post/podium/session_3_components'>\nFULL LISTING\n<\/a>\n- \nno\ncomments\n<\/p><\/div

      ><div id='keywords-122529b387e_6' class='keywords'><a id='edit-122529b387e_6' title='Click to edit keywords'

      href='/blog/index.outputposting.edit/8?t:ac=podium'><img alt='Edit Keywords' src='/assets/ctx/ajax-1

      .0-SNAPSHOT/images/pencil.png'/><\/a><\/div><br style='clear: both;'/><div class='entry'><p>In this session

      , we'll be learning about components: how to create them, how they work, and how they communicate with

      the outside world.<\/p><\/div><div class='post'><h3>Clear the browser history<\/h3><p class='meta'>

      \nPosted by\n<a href='/blogger/hlship'>\nhlship\n<\/a>\non\nJul 7, 2008 11:08:44 AM\n- \n<a href='/post

      /podium/clear_the_browser_history'>\nFULL LISTING\n<\/a>\n- \nno\ncomments\n<\/p><\/div><div id='keywords-122529b387e_7'

      class='keywords'><a id='edit-122529b387e_7' title='Click to edit keywords' href='/blog/index.outputposting

      .edit/7?t:ac=podium'><img alt='Edit Keywords' src='/assets/ctx/ajax-1.0-SNAPSHOT/images/pencil.png'/

      ><\/a><\/div><br style='clear: both;'/><div class='entry'><p>Note to self: in the future, remember to

      clear browser history before doing a screencast.  It's too easy to accidentally jump to an unwanted

      site just because you've visited it recently.<\/p>\r\n<p>Creating sessions and screencasts is <em>so

      <\/em> full of unwanted surprises!<\/p>\r\n<p> <\/p><\/div><div class='post'><h3>Picking up the

      pace<\/h3><p class='meta'>\nPosted by\n<a href='/blogger/hlship'>\nhlship\n<\/a>\non\nJul 4, 2008 11

      :11:54 AM\n- \n<a href='/post/podium/picking_up_the_pace'>\nFULL LISTING\n<\/a>\n- \nno\ncomments\n<\/p

      ><\/div><div id='keywords-122529b387e_8' class='keywords'><a id='edit-122529b387e_8' title='Click to

      edit keywords' href='/blog/index.outputposting.edit/6?t:ac=podium'><img alt='Edit Keywords' src='/assets

      /ctx/ajax-1.0-SNAPSHOT/images/pencil.png'/><\/a><\/div><br style='clear: both;'/><div class='entry'>

      <p>By the end of session #2, we'll have covered using PageLink, BeanEditForm and Grid along with a number

      of the Tapestry annotations.<\/p><\/div><\/div>"}

        Issue Links

          Activity

          Howard M. Lewis Ship created issue -
          Andrej Aschenbrenner made changes -
          Field Original Value New Value
          Link This issue is related to TAP5-706 [ TAP5-706 ]
          Andrej Aschenbrenner made changes -
          Comment [ It seems it is the same problem. ]
          Howard M. Lewis Ship made changes -
          Assignee Howard M. Lewis Ship [ hlship ]
          Howard M. Lewis Ship made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          Howard M. Lewis Ship made changes -
          Summary Includes JavaScript libraries are not properly uniqued within an Ajax partial update response Included JavaScript libraries are not properly uniqued within an Ajax partial update response
          Howard M. Lewis Ship made changes -
          Status In Progress [ 3 ] Closed [ 6 ]
          Fix Version/s 5.2.0 [ 12314122 ]
          Resolution Fixed [ 1 ]

            People

            • Assignee:
              Howard M. Lewis Ship
              Reporter:
              Howard M. Lewis Ship
            • Votes:
              2 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development