Author: bpontarelli
Date: Mon Mar 10 15:35:58 2008
New Revision: 635737
URL: http://svn.apache.org/viewvc?rev=635737&view=rev
Log:
Escaped key prior to OGNL evaluation for label. Test is commented out because I
couldn't figure out how to get it working.
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/components/UIBeanTest.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java?rev=635737&r1=635736&r2=635737&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
Mon Mar 10 15:35:58 2008
@@ -624,7 +624,9 @@
}
if(this.label == null) {
- this.label = "%{getText('"+ key +"')}";
+ // Escape the key prior to sending it down
+ String escaped = key.replace("'", "\\'");
+ this.label = "%{getText('" + escaped + "')}";
}
}
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/components/UIBeanTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/components/UIBeanTest.java?rev=635737&r1=635736&r2=635737&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/components/UIBeanTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/components/UIBeanTest.java
Mon Mar 10 15:35:58 2008
@@ -20,16 +20,15 @@
*/
package org.apache.struts2.components;
+import java.util.Collections;
+import java.util.Map;
+
import org.apache.struts2.StrutsTestCase;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.ValueStackFactory;
-
-import java.util.Map;
-import java.util.Collections;
/**
*
@@ -52,7 +51,7 @@
assertEquals("txtFldId", txtFld.getParameters().get("id"));
}
-
+
public void testPopulateComponentHtmlIdWithOgnl() throws Exception {
ValueStack stack = ActionContext.getContext().getValueStack();
MockHttpServletRequest req = new MockHttpServletRequest();
@@ -149,4 +148,22 @@
TextField txtFld = new TextField(stack, req, res);
assertEquals("12", txtFld.getTheme());
}
+
+// I couldn't figure out how to make this test work. Bailing for now.
+// public void testEscapeLabel() throws Exception {
+// ValueStack stack = ActionContext.getContext().getValueStack();
+// MockHttpServletRequest req = new MockHttpServletRequest();
+// MockHttpServletResponse res = new MockHttpServletResponse();
+// stack.push(this);
+//
+// TextField txtFld = new TextField(stack, req, res);
+// txtFld.setKey("test['foo']");
+// txtFld.evaluateParams();
+// assertEquals("test_label", txtFld.getParameters().get("label"));
+// }
+//
+// public String getText(String key) {
+// assertEquals("test[\\'foo\\']", key);
+// return "test_label";
+// }
}