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

          There are no comments yet on this issue.

            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