I've spent all day chasing down an issue that appeared when we upgraded to 
Tapestry 5.2.1 - it doesn't occur with T5.2.0, and I finally managed to find 
the change that is causing the problem. It's the fix for TAP5-1177 where 
tapestry.js was changed from

                                Tapestry.loadScriptsInReply(reply, function() {
                                                /*
                                                 * In a multi-zone update, the 
reply.content may be blank or
                                                 * missing.
                                                 */
                                                reply.content && 
this.show(reply.content);
to
                                Tapestry.loadScriptsInReply(reply, function() {
                                                /*
                                                 * In a multi-zone update, the 
reply.content may be missing,
                                                 * in which case, leave the 
curent content in place. TAP5-1177
                                                 */
                                                reply.content != undefined && 
this.show(reply.content);


The situation this is causing an issue for is where we have a form in a zone 
and submitting the form needs to update another zone so MultiZoneUpdate is used 
which has content in the json for the other zone. i.e.

{
  "content" : "",
  "zones" : {
    "someThingZone" : "<b>stuff</b>"
  }
}

This used to leave the form inside it's zone alone which is good because some 
other javascript fires which accesses part of the form. If the form has been 
removed from the DOM (as happens with T5.2.1) then this Javascript fails. I'm 
not very familiar with this code, and I've not personally used MultiZoneUpdate, 
but it seems to me at first glance that the content bit of the json will always 
be "" for MultiZoneUpdate. All the content goes into the "zones" part of the 
json. Also, the comment in the T5.2.1 version seems to say that the content 
should be left alone if content is missing, but since missing is the same as "" 
it doesn't do that.

Howard, what's your opinion? Can content ever be set to something, or left 
undefined? I can't see how using MultiZoneUpdate. This is affecting some pretty 
major functionality and we have a release in a couple of weeks, so I need to 
find a solution to this problem pretty swiftly. I will see if I can modify our 
javascript code to work around this without breaking anything else, but I'm not 
that hopeful.


Cheers,

Andy.

P.S. I found some other issues with the JS stacks, but that's not breaking 
anything - just may not be what you'd expect. I'll detail those in another 
email when I get the time.

Reply via email to