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

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

commit 1bbea42769276b10dd890312ddbf37314c9a1698
Author: Kusal Kithul-Godage <g...@kusal.io>
AuthorDate: Sat Apr 20 19:54:50 2024 +1000

    CONFSRVDEV-26354 Reinstate legacy WebWork syntax support (partial revert 
7840fa1)
---
 .../org/apache/struts2/components/Component.java   | 24 ++++++++++++++--------
 .../struts2/components/DoubleListUIBean.java       |  2 +-
 .../org/apache/struts2/components/FormButton.java  |  2 +-
 .../java/org/apache/struts2/components/Label.java  | 11 +++++-----
 .../java/org/apache/struts2/components/UIBean.java |  2 +-
 5 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/core/src/main/java/org/apache/struts2/components/Component.java 
b/core/src/main/java/org/apache/struts2/components/Component.java
index ba0d672bf..70456ee3e 100644
--- a/core/src/main/java/org/apache/struts2/components/Component.java
+++ b/core/src/main/java/org/apache/struts2/components/Component.java
@@ -68,6 +68,7 @@ public class Component {
      */
     protected static ConcurrentMap<Class<?>, Collection<String>> 
standardAttributesMap = new ConcurrentHashMap<>();
 
+    protected boolean legacySyntax;
     protected boolean devMode = false;
     protected boolean escapeHtmlBody = false;
     protected ValueStack stack;
@@ -103,6 +104,12 @@ public class Component {
         return name.substring(dot + 1).toLowerCase();
     }
 
+    // Required for Confluence 8.5 LTS
+    @Inject(value = "struts.tag.altSyntax", required = false)
+    public void setLegacySyntax(String legacySyntax) {
+        this.legacySyntax = !BooleanUtils.toBoolean(legacySyntax);
+    }
+
     @Inject(value = StrutsConstants.STRUTS_DEVMODE, required = false)
     public void setDevMode(String devMode) {
         this.devMode = BooleanUtils.toBoolean(devMode);
@@ -319,6 +326,9 @@ public class Component {
      * @return the modified expression wrapped with %{...}
      */
     protected String completeExpression(String expr) {
+        if (legacySyntax) {
+            return expr;
+        }
         if (expr == null) {
             return null;
         }
@@ -378,15 +388,13 @@ public class Component {
      * @return the Object found, or <tt>null</tt> if not found.
      */
     protected Object findValue(String expression, Class<?> toType) {
-        if (toType == String.class) {
-            if (ComponentUtils.containsExpression(expression)) {
-                return TextParseUtil.translateVariables('%', expression, 
stack);
-            } else {
-                return expression;
-            }
+        if (legacySyntax || toType != String.class) {
+            return getStack().findValue(stripExpression(expression), toType, 
throwExceptionOnELFailure);
+        }
+        if (ComponentUtils.containsExpression(expression)) {
+            return TextParseUtil.translateVariables('%', expression, stack);
         } else {
-            String strippedExpression = stripExpression(expression);
-            return getStack().findValue(strippedExpression, toType, 
throwExceptionOnELFailure);
+            return expression;
         }
     }
 
diff --git 
a/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java 
b/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java
index 9c4e30a0c..b8b7617e5 100644
--- a/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java
+++ b/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java
@@ -186,7 +186,7 @@ public abstract class DoubleListUIBean extends ListUIBean {
 
         Form form = (Form) findAncestor(Form.class);
         if (doubleId != null) {
-            addParameter("doubleId", findString(doubleId));
+            addParameter("doubleId", legacySyntax ? doubleId : 
findString(doubleId));
         } else if (form != null) {
             addParameter("doubleId", form.getParameters().get("id") + "_" + 
escape(doubleName != null ? findString(doubleName) : null));
         } else {
diff --git a/core/src/main/java/org/apache/struts2/components/FormButton.java 
b/core/src/main/java/org/apache/struts2/components/FormButton.java
index 0ed08d47b..7051e23a2 100644
--- a/core/src/main/java/org/apache/struts2/components/FormButton.java
+++ b/core/src/main/java/org/apache/struts2/components/FormButton.java
@@ -99,7 +99,7 @@ public abstract class FormButton extends ClosingUIBean {
         String tmpId = "";
         if (id != null) {
             // this check is needed for backwards compatibility with 2.1.x
-            tmpId = findString(id);
+            tmpId = legacySyntax ? id : findString(id);
         } else {
             if (form != null && form.getParameters().get("id") != null) {
                 tmpId = tmpId + form.getParameters().get("id").toString() + 
"_";
diff --git a/core/src/main/java/org/apache/struts2/components/Label.java 
b/core/src/main/java/org/apache/struts2/components/Label.java
index c09b88c80..17a0a9412 100644
--- a/core/src/main/java/org/apache/struts2/components/Label.java
+++ b/core/src/main/java/org/apache/struts2/components/Label.java
@@ -18,14 +18,13 @@
  */
 package org.apache.struts2.components;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.struts2.util.TextProviderHelper;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
-import org.apache.struts2.util.TextProviderHelper;
 
-import com.opensymphony.xwork2.util.ValueStack;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -89,7 +88,7 @@ public class Label extends UIBean {
             }
         } else if (name != null) {
             String expr = completeExpression(name);
-            addParameter("nameValue", findString(expr));
+            addParameter("nameValue", legacySyntax ? expr : findString(expr));
         }
     }
 
diff --git a/core/src/main/java/org/apache/struts2/components/UIBean.java 
b/core/src/main/java/org/apache/struts2/components/UIBean.java
index 59d3713ed..af446968a 100644
--- a/core/src/main/java/org/apache/struts2/components/UIBean.java
+++ b/core/src/main/java/org/apache/struts2/components/UIBean.java
@@ -1021,7 +1021,7 @@ public abstract class UIBean extends Component {
         String generatedId;
         if (id != null) {
             // this check is needed for backwards compatibility with 2.1.x
-            tryId = findString(id);
+            tryId = legacySyntax ? id : findString(id);
         } else if (null == (generatedId = escape(name != null ? 
findString(name) : null))) {
             LOG.debug("Cannot determine id attribute for [{}], consider 
defining id, name or key attribute!", this);
             tryId = null;

Reply via email to