Fix tags that have a closing
git-svn-id: https://svn.apache.org/repos/asf/struts/sandbox/trunk@727729 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AnchorHandler.java b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AnchorHandler.java
index 8c0a784..63246f4 100644
--- a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AnchorHandler.java
+++ b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AnchorHandler.java
@@ -40,6 +40,12 @@
.addIfExists("title", params.get("title"))
.addIfExists("tabindex", params.get("tabindex"));
start("a", attrs);
- end("a");
+ }
+
+ public static class CloseHandler extends AbstractTagHandler implements TagGenerator {
+ @Override
+ public void generate() throws IOException {
+ end("a");
+ }
}
}
diff --git a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/DivHandler.java b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/DivHandler.java
index db14f18..9aa18b4 100644
--- a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/DivHandler.java
+++ b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/DivHandler.java
@@ -37,6 +37,12 @@
.addIfExists("style", params.get("cssStyle"))
.addIfExists("title", params.get("title"));
start("div", attrs);
- end("div");
+ }
+
+ public static class CloseHandler extends AbstractTagHandler implements TagGenerator {
+ @Override
+ public void generate() throws IOException {
+ end("div");
+ }
}
}
diff --git a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/EmptyHandler.java b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/EmptyHandler.java
index b7ea425..eb81481 100644
--- a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/EmptyHandler.java
+++ b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/EmptyHandler.java
@@ -20,6 +20,13 @@
*/
package org.apache.struts2.views.java.simple;
+import org.apache.struts2.views.java.TagGenerator;
+
+import java.io.IOException;
+
//does nothing
-public class EmptyHandler extends AbstractTagHandler {
+public class EmptyHandler extends AbstractTagHandler implements TagGenerator {
+ @Override
+ public void generate() throws IOException {
+ }
}
diff --git a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/FormHandler.java b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/FormHandler.java
index df192fd..febf734 100644
--- a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/FormHandler.java
+++ b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/FormHandler.java
@@ -44,6 +44,12 @@
.addIfExists("accept-charset", params.get("acceptcharset"));
attrs.add("method", params.containsKey("method") ? (String) params.get("method") : "post");
start("form", attrs);
- end("form");
+ }
+
+ public static class CloseHandler extends AbstractTagHandler implements TagGenerator {
+ @Override
+ public void generate() throws IOException {
+ end("form");
+ }
}
}
diff --git a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
index 1cb5eff..015b577 100644
--- a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
+++ b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
@@ -37,13 +37,16 @@
put("textfield", new FactoryList(TextFieldHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
put("select", new FactoryList(SelectHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
put("form", new FactoryList(FormHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("form-close", new FactoryList(FormHandler.CloseHandler.class));
put("a", new FactoryList(AnchorHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("a-close", new FactoryList(AnchorHandler.CloseHandler.class));
put("checkbox", new FactoryList(CheckboxHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
put("file", new FactoryList(FileHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
put("password", new FactoryList(PasswordHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
put("label", new FactoryList(LabelHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
put("reset", new FactoryList(ResetHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
put("submit", new FactoryList(SubmitHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("submit-close", new FactoryList(SubmitHandler.CloseHandler.class));
put("textarea", new FactoryList(TextAreaHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
put("actionerror", new FactoryList(ActionErrorHandler.class));
put("token", new FactoryList(TokenHandler.class));
@@ -52,6 +55,7 @@
put("hidden", new FactoryList(HiddenHandler.class));
put("fielderror", new FactoryList(FieldErrorHandler.class));
put("div", new FactoryList(DivHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("div-close", new FactoryList(DivHandler.CloseHandler.class));
put("empty", new FactoryList(EmptyHandler.class));
}});
setName("simple");
diff --git a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java
index 30e705a..5b35566 100644
--- a/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java
+++ b/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java
@@ -57,8 +57,6 @@
if (TextUtils.stringSet(label))
characters(label, false);
}
-
- end("button");
} else if ("image".equals(type)) {
if (TextUtils.stringSet(body))
characters(body, false);
@@ -67,7 +65,6 @@
.addIfExists("alt", params.get("label"));
start("input", attrs);
- end("input");
} else {
attrs.addIfExists("name", params.get("name"))
.addIfExists("value", params.get("nameValue"), false)
@@ -78,7 +75,22 @@
.addIfExists("style", params.get("cssStyle"));
start("submit", attrs);
- end("submit");
+ }
+ }
+
+ public static class CloseHandler extends AbstractTagHandler implements TagGenerator {
+ @Override
+ public void generate() throws IOException {
+ Map<String, Object> params = context.getParameters();
+ Attributes attrs = new Attributes();
+
+ String type = TextUtils.noNull((String) params.get("type"), "input");
+ if ("button".equals(type))
+ end("button");
+ else if ("image".equals(type))
+ end("input");
+ else
+ end("submit");
}
}
}
diff --git a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java
index 6fc1eee..861807c 100644
--- a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java
+++ b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java
@@ -147,6 +147,7 @@
return val == null ? null : val;
}
+ //XWorkConverter doesnt have a public onstructor (the one with parameters will require mor config)
public class ConverterEx extends XWorkConverter {
public ConverterEx() {
diff --git a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AnchorTest.java b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AnchorTest.java
index fe23759..d8520c4 100644
--- a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AnchorTest.java
+++ b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AnchorTest.java
@@ -39,6 +39,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<a name='name_' id='id_' class='class' style='style' href='http://sometest.com?ab=10' title='title' tabindex='1'></a>");
assertEquals(expected, output);
diff --git a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/DivTest.java b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/DivTest.java
index 50250a5..ff97895 100644
--- a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/DivTest.java
+++ b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/DivTest.java
@@ -37,6 +37,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<div name='name_' id='id_' class='class' style='style' title='title'></div>");
assertEquals(expected, output);
diff --git a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/FormTest.java b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/FormTest.java
index a670ff7..af8f303 100644
--- a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/FormTest.java
+++ b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/FormTest.java
@@ -47,6 +47,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<form name='name_' id='id_' onsubmit='submit' onreset='reset' target='target_' enctype='enc' class='class_' style='style_' title='title' accept-charset='charset_' method='post'></form>");
assertEquals(expected, output);
@@ -56,6 +57,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<form method='post'></form>");
assertEquals(expected, output);
diff --git a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SubmitTest.java b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SubmitTest.java
index f89ff0d..4a43cff 100644
--- a/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SubmitTest.java
+++ b/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SubmitTest.java
@@ -44,6 +44,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<button name='name' type='submit' value='val1' tabindex='1' id='id1' class='class1' style='style1'><span>hey hey hey, here I go now</span></button>");
assertEquals(expected, output);
@@ -65,6 +66,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<button name='name' type='submit' value='val1' tabindex='1' id='id1' class='class1' style='style1'>Just as soon as I belong, than its time I disappear</button>");
assertEquals(expected, output);
@@ -86,6 +88,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<submit name='name' value='val1' tabindex='1' id='id1' class='class1' style='style1'></submit>");
assertEquals(expected, output);
@@ -106,6 +109,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<submit name='name' value='val1' tabindex='1' id='id1' class='class1' style='style1'></submit>");
assertEquals(expected, output);
@@ -120,6 +124,7 @@
tag.evaluateParams();
map.putAll(tag.getParameters());
theme.renderTag(getTagName(), context);
+ theme.renderTag(getTagName() + "-close", context);
String output = writer.getBuffer().toString();
String expected = s("<input src='http://somesource/image.gif' type='image' alt='alt text'></input>");
assertEquals(expected, output);