diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/EvalTag.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/EvalTag.java index 66a6ac61f9f..760ecf6b0f2 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/EvalTag.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/EvalTag.java @@ -99,7 +99,6 @@ public class EvalTag extends HtmlEscapingAwareTag { Expression expression = this.expressionParser.parseExpression(this.expression); EvaluationContext context = createEvaluationContext(); if (this.var == null) { - // print the url to the writer try { String result = expression.getValue(context, String.class); result = isHtmlEscape() ? HtmlUtils.htmlEscape(result) : result; @@ -111,7 +110,6 @@ public class EvalTag extends HtmlEscapingAwareTag { } } else { - // store the url as a variable pageContext.setAttribute(var, expression.getValue(context), scope); } return EVAL_PAGE; @@ -129,8 +127,7 @@ public class EvalTag extends HtmlEscapingAwareTag { private ConversionService getConversionService() { try { - // TODO replace this with a call to RequestContext that is not brittle - return getRequestContext().getWebApplicationContext().getBean("conversionService", ConversionService.class); + return (ConversionService) this.pageContext.getRequest().getAttribute("org.springframework.core.convert.ConversionService"); } catch (BeansException e) { return null; } diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/AbstractTagTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/AbstractTagTests.java index bc2cc8b7109..ea5b7511e35 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/AbstractTagTests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/AbstractTagTests.java @@ -18,7 +18,6 @@ package org.springframework.web.servlet.tags; import junit.framework.TestCase; -import org.springframework.format.support.FormattingConversionServiceFactoryBean; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockPageContext; @@ -44,8 +43,6 @@ public abstract class AbstractTagTests extends TestCase { SimpleWebApplicationContext wac = new SimpleWebApplicationContext(); wac.setServletContext(sc); wac.setNamespace("test"); - // TODO this name index leads to brittle lookup by EvalTag - wac.registerSingleton("conversionService", FormattingConversionServiceFactoryBean.class); wac.refresh(); MockHttpServletRequest request = new MockHttpServletRequest(sc); diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/EvalTagTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/EvalTagTests.java index e415904240b..6ba7d977735 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/EvalTagTests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/EvalTagTests.java @@ -22,6 +22,7 @@ import javax.servlet.jsp.tagext.Tag; import org.springframework.format.annotation.NumberFormat; import org.springframework.format.annotation.NumberFormat.Style; +import org.springframework.format.support.FormattingConversionServiceFactoryBean; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockPageContext; @@ -33,6 +34,9 @@ public class EvalTagTests extends AbstractTagTests { protected void setUp() throws Exception { context = createPageContext(); + FormattingConversionServiceFactoryBean factory = new FormattingConversionServiceFactoryBean(); + factory.afterPropertiesSet(); + context.getRequest().setAttribute("org.springframework.core.convert.ConversionService", factory.getObject()); context.getRequest().setAttribute("bean", new Bean()); tag = new EvalTag(); tag.setPageContext(context); @@ -53,7 +57,6 @@ public class EvalTagTests extends AbstractTagTests { assertEquals(Tag.EVAL_BODY_INCLUDE, action); action = tag.doEndTag(); assertEquals(Tag.EVAL_PAGE, action); - // TODO - fails because EL does not consider annotations on getter/setter method or field for properties (just annotations on method parameters) //assertEquals("25%", ((MockHttpServletResponse)context.getResponse()).getContentAsString()); }