From 3951b6833cf75880c9d27b20ff15e6072bba3649 Mon Sep 17 00:00:00 2001 From: "Donald J. Brown" Date: Sat, 20 Jan 2007 08:44:14 +0000 Subject: [PATCH] Fixed parsing of name for ognl when no id is specified and using name value WW-1617 git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@498091 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/struts2/components/UIBean.java | 5 +++-- .../apache/struts2/components/UIBeanTest.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) 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 e7a12d9c8..01d3afa81 100644 --- a/core/src/main/java/org/apache/struts2/components/UIBean.java +++ b/core/src/main/java/org/apache/struts2/components/UIBean.java @@ -872,9 +872,10 @@ public abstract class UIBean extends Component { addParameter("id", id); } } else if (form != null) { - addParameter("id", form.getParameters().get("id") + "_" + escape(name)); + addParameter("id", form.getParameters().get("id") + "_" + + escape(name != null ? findString(name) : null)); } else { - addParameter("id", escape(name)); + addParameter("id", escape(name != null ? findString(name) : null)); } } diff --git a/core/src/test/java/org/apache/struts2/components/UIBeanTest.java b/core/src/test/java/org/apache/struts2/components/UIBeanTest.java index 20096c146..cf380a698 100644 --- a/core/src/test/java/org/apache/struts2/components/UIBeanTest.java +++ b/core/src/test/java/org/apache/struts2/components/UIBeanTest.java @@ -48,6 +48,22 @@ public class UIBeanTest extends StrutsTestCase { assertEquals("txtFldId", txtFld.getParameters().get("id")); } + + public void testPopulateComponentHtmlIdWithOgnl() throws Exception { + ValueStack stack = ValueStackFactory.getFactory().createValueStack(); + MockHttpServletRequest req = new MockHttpServletRequest(); + MockHttpServletResponse res = new MockHttpServletResponse(); + + Form form = new Form(stack, req, res); + form.getParameters().put("id", "formId"); + + TextField txtFld = new TextField(stack, req, res); + txtFld.setName("txtFldName%{'1'}"); + + txtFld.populateComponentHtmlId(form); + + assertEquals("formId_txtFldName1", txtFld.getParameters().get("id")); + } public void testPopulateComponentHtmlId2() throws Exception { ValueStack stack = ValueStackFactory.getFactory().createValueStack();