diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AnchorHandler.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AnchorHandler.java index 778bf617bc..8d50341d19 100644 --- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AnchorHandler.java +++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/AnchorHandler.java @@ -20,36 +20,40 @@ */ package org.apache.struts2.views.java.simple; +import org.apache.commons.lang3.StringUtils; import org.apache.struts2.views.java.Attributes; import org.apache.struts2.views.java.TagGenerator; -import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.util.Map; public class AnchorHandler extends AbstractTagHandler implements TagGenerator { + public void generate() throws IOException { - //all rendering must happend at the end of the tag, so we can support nested params + Map params = context.getParameters(); + + Attributes attrs = new Attributes(); + attrs.addIfExists("name", params.get("name")) + .addIfExists("id", params.get("id")) + .addIfExists("class", params.get("cssClass")) + .addIfExists("style", params.get("cssStyle")) + .addIfExists("href", params.get("href"), false) + .addIfExists("title", params.get("title")) + .addIfExists("tabindex", params.get("tabindex")); + start("a", attrs); } public static class CloseHandler extends AbstractTagHandler implements TagGenerator { + public void generate() throws IOException { Map params = context.getParameters(); - - Attributes attrs = new Attributes(); - - attrs.addIfExists("name", params.get("name")) - .addIfExists("id", params.get("id")) - .addIfExists("class", params.get("cssClass")) - .addIfExists("style", params.get("cssStyle")) - .addIfExists("href", params.get("href"), false) - .addIfExists("title", params.get("title")) - .addIfExists("tabindex", params.get("tabindex")); - start("a", attrs); String body = (String) params.get("body"); - if (StringUtils.isNotEmpty(body)) + if (StringUtils.isNotEmpty(body)) { characters(body, false); + } end("a"); } + } + } diff --git a/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AnchorTest.java b/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AnchorTest.java index acb38e9aa2..673d8128f4 100644 --- a/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AnchorTest.java +++ b/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AnchorTest.java @@ -46,6 +46,28 @@ public void testRenderAnchor() { assertEquals(expected, output); } + public void testRenderScriptingEvents() { + tag.setName("name_"); + tag.setOnclick("alert('click')"); + tag.setOnchange("alert('change)"); + tag.setOnfocus("alert('focus')"); + tag.setOnselect("alert('select')"); + tag.setOndblclick("alert('dbclick')"); + tag.setOnkeydown("alert('keydown')"); + tag.setOnkeypress("alert('keypress')"); + tag.setHref("http://sometest.com?ab=10"); + + tag.evaluateParams(); + map.putAll(tag.getParameters()); + theme.renderTag(getTagName(), context); + theme.renderTag(getTagName() + "-close", context); + String output = writer.getBuffer().toString(); + String expected = ""; + assertEquals(expected, output); + } + @Override protected void setUp() throws Exception { super.setUp();