Author: lukaszlenart Date: Thu Sep 6 12:54:48 2012 New Revision: 1381585 URL: http://svn.apache.org/viewvc?rev=1381585&view=rev Log: WW-3644 changes support for expression as a dynamic attribute to parse only values enclosed in %{ and }
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java?rev=1381585&r1=1381584&r2=1381585&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java Thu Sep 6 12:54:48 2012 @@ -278,7 +278,7 @@ public class Component { public static String stripExpressionIfAltSyntax(ValueStack stack, String expr) { if (altSyntax(stack)) { // does the expression start with %{ and end with }? if so, just cut it off! - if (expr.startsWith("%{") && expr.endsWith("}")) { + if (isExpression(expr)) { return expr.substring(2, expr.length() - 1); } } @@ -511,10 +511,16 @@ public class Component { } /** - * Overwrite to set if body shold be used. + * Overwrite to set if body should be used. * @return always false for this component. */ public boolean usesBody() { return false; } + + public static boolean isExpression(Object value) { + String expr = value.toString(); + return expr.startsWith("%{") && expr.endsWith("}"); + } + } Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java?rev=1381585&r1=1381584&r2=1381585&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java Thu Sep 6 12:54:48 2012 @@ -22,6 +22,7 @@ package org.apache.struts2.views.jsp.ui; import org.apache.commons.lang3.ObjectUtils; +import org.apache.struts2.components.Component; import org.apache.struts2.components.UIBean; import org.apache.struts2.views.jsp.ComponentTagSupport; @@ -291,10 +292,11 @@ public abstract class AbstractUITag exte } public void setDynamicAttribute(String uri, String localName, Object value) throws JspException { - if (value != null && value instanceof String) { + if (Component.altSyntax(getStack()) && Component.isExpression(value)) { dynamicAttributes.put(localName, String.valueOf(ObjectUtils.defaultIfNull(findValue(value.toString()), value))); } else { dynamicAttributes.put(localName, value); } } + } Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java?rev=1381585&r1=1381584&r2=1381585&view=diff ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java Thu Sep 6 12:54:48 2012 @@ -44,6 +44,8 @@ import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; +import static org.apache.struts2.views.jsp.AbstractUITagTest.normalize; + /** * Test case for FreeMarkerResult. * @@ -262,7 +264,7 @@ public class FreeMarkerResultTest extend + "\n" + "<input type=\"radio\" name=\"car\" id=\"carford\" value=\"ford\"/><label for=\"carford\">Ford Motor Co</label>\n" + "<input type=\"radio\" name=\"car\" id=\"cartoyota\" value=\"toyota\"/><label for=\"cartoyota\">Toyota</label>\n"; - assertEquals(expected, stringWriter.toString()); + assertEquals(normalize(expected), normalize(stringWriter.toString())); } public void testDynamicAttributesInTheme() throws Exception { Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java?rev=1381585&r1=1381584&r2=1381585&view=diff ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java Thu Sep 6 12:54:48 2012 @@ -71,7 +71,7 @@ public class AnchorTest extends Abstract AnchorTag tag = createTag(); tag.setHref("a"); - tag.setDynamicAttribute("uri", "placeholder", "foo"); + tag.setDynamicAttribute("uri", "placeholder", "%{foo}"); tag.doStartTag(); tag.doEndTag();