conversion service lookup in request

This commit is contained in:
Keith Donald 2010-02-12 00:33:27 +00:00
parent 315c16de5f
commit e1a0625a15
3 changed files with 5 additions and 8 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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());
}