Browse Source

Merge branch '6.2.x'

pull/34092/head
Sam Brannen 1 year ago
parent
commit
34f74026f7
  1. 2
      spring-webmvc/src/main/java/org/springframework/web/servlet/tags/EvalTag.java
  2. 26
      spring-webmvc/src/test/java/org/springframework/web/servlet/tags/EvalTagTests.java

2
spring-webmvc/src/main/java/org/springframework/web/servlet/tags/EvalTag.java

@ -259,7 +259,7 @@ public class EvalTag extends HtmlEscapingAwareTag {
return null; return null;
} }
try { try {
return this.elContext.getELResolver().getValue(this.elContext, name, null); return this.elContext.getELResolver().getValue(this.elContext, null, name);
} }
catch (Exception ex) { catch (Exception ex) {
throw new AccessException( throw new AccessException(

26
spring-webmvc/src/test/java/org/springframework/web/servlet/tags/EvalTagTests.java

@ -21,6 +21,8 @@ import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.servlet.jsp.tagext.Tag; import jakarta.servlet.jsp.tagext.Tag;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
@ -37,6 +39,12 @@ import org.springframework.web.testfixture.servlet.MockHttpServletResponse;
import org.springframework.web.testfixture.servlet.MockPageContext; import org.springframework.web.testfixture.servlet.MockPageContext;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
/** /**
* @author Keith Donald * @author Keith Donald
@ -52,11 +60,18 @@ class EvalTagTests extends AbstractTagTests {
void setup() { void setup() {
LocaleContextHolder.setDefaultLocale(Locale.UK); LocaleContextHolder.setDefaultLocale(Locale.UK);
context = createPageContext(); context = spy(createPageContext());
ELContext elContext = mock();
ELResolver elResolver = mock();
given(elResolver.getValue(same(elContext), isNull(), eq("pageContext"))).willReturn(context);
given(elContext.getELResolver()).willReturn(elResolver);
given(context.getELContext()).willReturn(elContext);
FormattingConversionServiceFactoryBean factory = new FormattingConversionServiceFactoryBean(); FormattingConversionServiceFactoryBean factory = new FormattingConversionServiceFactoryBean();
factory.afterPropertiesSet(); factory.afterPropertiesSet();
context.getRequest().setAttribute("org.springframework.core.convert.ConversionService", factory.getObject()); context.getRequest().setAttribute("org.springframework.core.convert.ConversionService", factory.getObject());
context.getRequest().setAttribute("bean", new Bean()); context.getRequest().setAttribute("bean", new Bean());
tag = new EvalTag(); tag = new EvalTag();
tag.setPageContext(context); tag.setPageContext(context);
} }
@ -181,6 +196,15 @@ class EvalTagTests extends AbstractTagTests {
assertThat(((MockHttpServletResponse) context.getResponse()).getContentAsString()).isEqualTo("value"); assertThat(((MockHttpServletResponse) context.getResponse()).getContentAsString()).isEqualTo("value");
} }
@Test
void resolveImplicitVariable() throws Exception {
tag.setExpression("pageContext.getClass().getSimpleName()");
int action = tag.doStartTag();
assertThat(action).isEqualTo(Tag.EVAL_BODY_INCLUDE);
action = tag.doEndTag();
assertThat(action).isEqualTo(Tag.EVAL_PAGE);
assertThat(((MockHttpServletResponse) context.getResponse()).getContentAsString()).isEqualTo("MockPageContext");
}
public static class Bean { public static class Bean {

Loading…
Cancel
Save