Repository: tapestry-5 Updated Branches: refs/heads/master 40615866b -> 0f3eb8a82
TAP5-2273: AjaxFormLoop doesn't work well inside a table tag Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/0f3eb8a8 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/0f3eb8a8 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/0f3eb8a8 Branch: refs/heads/master Commit: 0f3eb8a8257b00bed2e43bc5a568ef7f48d54338 Parents: 4061586 Author: Howard M. Lewis Ship <hls...@apache.org> Authored: Fri Oct 3 16:41:29 2014 -0700 Committer: Howard M. Lewis Ship <hls...@apache.org> Committed: Fri Oct 3 16:41:29 2014 -0700 ---------------------------------------------------------------------- .../corelib/components/AjaxFormLoop.java | 21 +++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f3eb8a8/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java index f5f0a17..1a58a91 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java @@ -1,5 +1,3 @@ -// Copyright 2008, 2009, 2010, 2011, 2012 The Apache Software Foundation -// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -17,6 +15,7 @@ package org.apache.tapestry5.corelib.components; import org.apache.tapestry5.*; import org.apache.tapestry5.annotations.*; import org.apache.tapestry5.corelib.internal.AjaxFormLoopContext; +import org.apache.tapestry5.dom.Element; import org.apache.tapestry5.internal.services.RequestConstants; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.TypeCoercer; @@ -145,6 +144,8 @@ public class AjaxFormLoop private JavaScriptSupport jsSupport; private Iterator iterator; + + private Element wrapper; @Inject private TypeCoercer typeCoercer; @@ -317,10 +318,15 @@ public class AjaxFormLoop injectRowLink.addParameter(RequestConstants.FORM_CLIENTID_PARAMETER, formSupport.getClientId()); injectRowLink.addParameter(RequestConstants.FORM_COMPONENTID_PARAMETER, formSupport.getFormComponentId()); - writer.element("div", - "data-container-type", "core/AjaxFormLoop", - "data-remove-row-url", removeRowLink, - "data-inject-row-url", injectRowLink); + // Fix for TAP5-227 - AjaxFormLoop dont work well inside a table tag + Element element = writer.getElement(); + this.wrapper = element.getAttribute("data-container-type") != null + || element.getAttribute("data-remove-row-url") != null + || element.getAttribute("data-inject-row-url") != null ? writer.element("div") : null; + + writer.attributes("data-container-type", "core/AjaxFormLoop", + "data-remove-row-url", removeRowLink, + "data-inject-row-url", injectRowLink); } private void pushContext() @@ -368,7 +374,8 @@ public class AjaxFormLoop void cleanupRender(MarkupWriter writer) { - writer.end(); + if (wrapper != null) + writer.end(); popContext(); }