You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by wo...@apache.org on 2018/01/30 14:28:24 UTC
incubator-freemarker git commit: FREEMARKER-55: correcting nested
content/parameter handling
Repository: incubator-freemarker
Updated Branches:
refs/heads/3 fe83bc9f7 -> 0288c9296
FREEMARKER-55: correcting nested content/parameter handling
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/0288c929
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/0288c929
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/0288c929
Branch: refs/heads/3
Commit: 0288c9296cde84d4abfc8740e58381d7286da678
Parents: fe83bc9
Author: Woonsan Ko <wo...@apache.org>
Authored: Tue Jan 30 09:28:16 2018 -0500
Committer: Woonsan Ko <wo...@apache.org>
Committed: Tue Jan 30 09:28:16 2018 -0500
----------------------------------------------------------------------
.../form/ErrorsTemplateDirectiveModel.java | 34 +++++++++-----------
.../form/ErrorsTemplateDirectiveModelTest.java | 9 +++---
.../model/form/errors-directive-usages.ftlh | 13 +++++---
3 files changed, 29 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0288c929/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java
index 80ada12..8910214 100644
--- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java
+++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java
@@ -20,7 +20,6 @@
package org.apache.freemarker.spring.model.form;
import java.io.IOException;
-import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
@@ -142,25 +141,22 @@ class ErrorsTemplateDirectiveModel extends AbstractHtmlElementTemplateDirectiveM
param = CallableUtils.getOptionalStringArgument(args, DELIMITER_PARAM_IDX, this);
delimiter = (StringUtils.hasText(param)) ? param : DEFAULT_DELIMITER;
- String nestedContent = null;
-
- try {
- List<String> messages = new ArrayList<String>();
- messages.addAll(Arrays.asList(getBindStatus().getErrorMessages()));
- SimpleCollection messagesModel = new SimpleCollection(messages, objectWrapperAndUnwrapper);
- final TemplateModel[] nestedContentArgs = new TemplateModel[] { messagesModel };
-
- StringWriter nestedOut = new StringWriter(1024);
- callPlace.executeNestedContent(nestedContentArgs, nestedOut, env);
- nestedContent = nestedOut.toString();
- } finally {
- if (StringUtils.hasText(nestedContent)) {
- out.write(nestedContent);
- } else {
- TagOutputter tagOut = new TagOutputter(out);
- renderDefaultContent(tagOut);
- }
+ if (!callPlace.hasNestedContent()) {
+ TagOutputter tagOut = new TagOutputter(out);
+ renderDefaultContent(tagOut);
+ return;
+ }
+
+ if (callPlace.getNestedContentParameterCount() == 0) {
+ callPlace.executeNestedContent(null, out, env);
+ return;
}
+
+ List<String> messages = new ArrayList<String>();
+ messages.addAll(Arrays.asList(getBindStatus().getErrorMessages()));
+ SimpleCollection messagesModel = new SimpleCollection(messages, objectWrapperAndUnwrapper);
+ final TemplateModel[] nestedContentArgs = new TemplateModel[] { messagesModel };
+ callPlace.executeNestedContent(nestedContentArgs, out, env);
}
public String getElement() {
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0288c929/freemarker-spring/src/test/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModelTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModelTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModelTest.java
index 3ee929e..14c2331 100644
--- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModelTest.java
+++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModelTest.java
@@ -64,11 +64,12 @@ public class ErrorsTemplateDirectiveModelTest {
.param("firstName", "").param("lastName", "").param("email", "")
.accept(MediaType.parseMediaType("text/html"))).andExpect(status().isOk())
.andExpect(content().contentTypeCompatibleWith("text/html")).andDo(print())
- .andExpect(xpath("string(//form[@id='form1']//div[@id='formErrors']/ul)").string(Matchers.containsString("First name")))
- .andExpect(xpath("string(//form[@id='form1']//div[@id='formErrors']/ul)").string(Matchers.containsString("Last name")))
- .andExpect(xpath("string(//form[@id='form1']//div[@id='formErrors']/ul)").string(Matchers.containsString("E-Mail")))
+ .andExpect(xpath("string(//form[@id='form1']//div[@id='formErrors1']/ul)").string(Matchers.containsString("First name")))
+ .andExpect(xpath("string(//form[@id='form1']//div[@id='formErrors1']/ul)").string(Matchers.containsString("Last name")))
+ .andExpect(xpath("string(//form[@id='form1']//div[@id='formErrors1']/ul)").string(Matchers.containsString("E-Mail")))
+ .andExpect(xpath("string(//form[@id='form1']//div[@id='formErrors2']/p)").string(Matchers.containsString("some errors")))
.andExpect(xpath("//form[@id='form1']//span[@class='errorFirstName']/text()").string(Matchers.containsString("First name")))
.andExpect(xpath("//form[@id='form1']//span[@class='errorLastName']/text()").string(Matchers.containsString("Last name")))
- .andExpect(xpath("//form[@id='form1']//span[@class='errorEmail']/text()").string(Matchers.containsString("E-Mail")));
+ .andExpect(xpath("//form[@id='form1']//div[@class='errorEmail']/text()").string(Matchers.containsString("E-Mail")));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0288c929/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/form/errors-directive-usages.ftlh
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/form/errors-directive-usages.ftlh b/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/form/errors-directive-usages.ftlh
index 8b79f7e..62b5141 100644
--- a/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/form/errors-directive-usages.ftlh
+++ b/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/form/errors-directive-usages.ftlh
@@ -23,7 +23,7 @@
<hr/>
<@form.form 'user' id="form1">
- <div id="formErrors">
+ <div id="formErrors1">
<@form.errors '*'; messages>
<ul>
<#list messages as message>
@@ -32,6 +32,11 @@
</ul>
</...@form.errors>
</div>
+ <div id="formErrors2">
+ <@form.errors '*'>
+ <p>There are some errors.</p>
+ </...@form.errors>
+ </div>
<table>
<tr>
<th>
@@ -39,7 +44,7 @@
</th>
<td>
<@form.input 'firstName' />
- <@form.errors 'firstName' cssClass="errorFirstName"; messages />
+ <@form.errors 'firstName' cssClass="errorFirstName" />
</td>
</tr>
<tr>
@@ -48,7 +53,7 @@
</th>
<td>
<@form.input 'lastName' />
- <@form.errors 'lastName' cssClass="errorLastName"; messages />
+ <@form.errors 'lastName' cssClass="errorLastName" />
</td>
</tr>
<tr>
@@ -57,7 +62,7 @@
</th>
<td>
<@form.input 'email' />
- <@form.errors 'email' cssClass="errorEmail"; messages />
+ <@form.errors 'email' element="div" cssClass="errorEmail" />
</td>
</tr>
</table>