TAPESTRY-2251 append existing onclick

git-svn-id: https://svn.apache.org/repos/asf/tapestry/tapestry4/trunk@818919 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tapestry-contrib/src/java/org/apache/tapestry/contrib/link/ButtonLinkRenderer.java b/tapestry-contrib/src/java/org/apache/tapestry/contrib/link/ButtonLinkRenderer.java
index 72c6a13..5111963 100644
--- a/tapestry-contrib/src/java/org/apache/tapestry/contrib/link/ButtonLinkRenderer.java
+++ b/tapestry-contrib/src/java/org/apache/tapestry/contrib/link/ButtonLinkRenderer.java
@@ -57,15 +57,19 @@
             writer.attribute("disabled", "disabled");
         }
 
+        component.renderAdditionalAttributes(writer, cycle);
+
         if (!cycle.isRewinding()) {
             String url = link.getURL(component.getAnchor(), true);
             String target = component.getTarget();
             String onclick = (target == null) ? getScript(url) : getScript(url, target);
 
-            writer.attribute("onclick", onclick);
+            if (writer.hasAttribute("onclick")) {
+                writer.appendAttribute("onclick", ";" + onclick);
+            } else {
+                writer.attribute("onclick", onclick);
+            }
         }
-        
-        component.renderAdditionalAttributes(writer, cycle);
 
         IMarkupWriter wrappedWriter = writer.getNestedWriter();
 
diff --git a/tapestry-contrib/src/test/org/apache/tapestry/contrib/link/TestButtonLinkRenderer.java b/tapestry-contrib/src/test/org/apache/tapestry/contrib/link/TestButtonLinkRenderer.java
index 6001cfe..7940538 100644
--- a/tapestry-contrib/src/test/org/apache/tapestry/contrib/link/TestButtonLinkRenderer.java
+++ b/tapestry-contrib/src/test/org/apache/tapestry/contrib/link/TestButtonLinkRenderer.java
@@ -30,7 +30,7 @@
                 "class", "info");
 
         assertLinkRenderer(linkRenderer, linkComponent,
-                "<button type=\"button\" onclick=\"window.location='my.site'\" class=\"info\"></button>",
+                "<button type=\"button\" class=\"info\" onclick=\"window.location='my.site'\"></button>",
                 "");
     }
 
@@ -41,11 +41,7 @@
                 "onclick", "alert('hi')");
 
         assertLinkRenderer(linkRenderer, linkComponent,
-                "<button type=\"button\" onclick=\"alert('hi')\"></button>",
-                // TODO: correct is
-                // "<button type=\"button\" onclick=\"window.location='my.site'\"></button>"
-                // or even better (TAPESTRY-2251)
-                // "<button type=\"button\" onclick=\"alert('hi');window.location='my.site'\"></button>"
+                "<button type=\"button\" onclick=\"alert('hi') ;window.location='my.site'\"></button>",
                 "");
     }