This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/struts.git


The following commit(s) were added to refs/heads/master by this push:
     new 6df90bf  WW-5086 Fixes s:set tag with empty body
6df90bf is described below

commit 6df90bff3b1734274983dcf1ffc7567d219ff54d
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Mon Aug 17 08:30:56 2020 +0200

    WW-5086 Fixes s:set tag with empty body
---
 core/src/main/java/org/apache/struts2/components/Set.java  |  9 ++-------
 .../test/java/org/apache/struts2/views/jsp/SetTagTest.java | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/core/src/main/java/org/apache/struts2/components/Set.java 
b/core/src/main/java/org/apache/struts2/components/Set.java
index a8233b9..fb2a366 100644
--- a/core/src/main/java/org/apache/struts2/components/Set.java
+++ b/core/src/main/java/org/apache/struts2/components/Set.java
@@ -31,8 +31,7 @@ import com.opensymphony.xwork2.util.ValueStack;
  * complex expression and then simply reference that variable each time rather 
than the complex expression. This is
  * useful in both cases: when the complex expression takes time (performance 
improvement) or is hard to read (code
  * readability improvement).</p>
- * <p>If the tag is used with body content, the evaluation of the value 
parameter is omitted. Instead, the String to
- * which the body evaluates is set as value for the scoped variable.</p>
+ * <p>If the value parameter is omitted, the String to which the body 
evaluates is set as value for the scoped variable.</p>
  *
  * <p>The scopes available are as follows:</p>
  * <ul>
@@ -94,11 +93,7 @@ public class Set extends ContextBean {
 
         Object o;
         if (value == null) {
-            if (body != null && !body.equals("")) {
-                o = body;
-            } else {
-                o = findValue("top");
-            }
+            o = body;
         } else {
             o = findValue(value);
         }
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/SetTagTest.java 
b/core/src/test/java/org/apache/struts2/views/jsp/SetTagTest.java
index 16e56f2..5edfae4 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/SetTagTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/SetTagTest.java
@@ -121,6 +121,20 @@ public class SetTagTest extends AbstractUITagTest {
         assertEquals(beginEndSpaceString, context.get("foo"));
     }
 
+    public void testEmptyBody() throws JspException {
+        StrutsMockBodyContent mockBodyContent;
+        String variableName = "foo";
+        tag.setName(variableName);
+        tag.setValue(null);
+        mockBodyContent = new StrutsMockBodyContent(new MockJspWriter());
+        String emptyBody = "";
+        mockBodyContent.setString(emptyBody);
+        tag.setBodyContent(mockBodyContent);
+        tag.doStartTag();
+        tag.doEndTag();
+        assertEquals(emptyBody, context.get(variableName));
+    }
+
     protected void setUp() throws Exception {
         super.setUp();
 

Reply via email to