@SessionAttributes works when used on an annotated controller interface with AOP proxying (SPR-6797)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2925 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
parent
508d9ba48b
commit
1335e58c45
|
|
@ -199,7 +199,7 @@ public class ServletAnnotationControllerTests {
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/myPath.do");
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/myPath.do");
|
||||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||||
servlet.service(request, response);
|
servlet.service(request, response);
|
||||||
assertEquals("foo-bar", response.getContentAsString());
|
assertEquals("foo-null-bar", response.getContentAsString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -262,8 +262,7 @@ public class ServletAnnotationControllerTests {
|
||||||
DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
|
DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
|
||||||
autoProxyCreator.setBeanFactory(wac.getBeanFactory());
|
autoProxyCreator.setBeanFactory(wac.getBeanFactory());
|
||||||
wac.getBeanFactory().addBeanPostProcessor(autoProxyCreator);
|
wac.getBeanFactory().addBeanPostProcessor(autoProxyCreator);
|
||||||
wac.getBeanFactory()
|
wac.getBeanFactory().registerSingleton("advisor", new DefaultPointcutAdvisor(new SimpleTraceInterceptor()));
|
||||||
.registerSingleton("advisor", new DefaultPointcutAdvisor(new SimpleTraceInterceptor()));
|
|
||||||
wac.refresh();
|
wac.refresh();
|
||||||
return wac;
|
return wac;
|
||||||
}
|
}
|
||||||
|
|
@ -335,6 +334,43 @@ public class ServletAnnotationControllerTests {
|
||||||
assertTrue(((Map) session.getAttribute("model")).containsKey("object2"));
|
assertTrue(((Map) session.getAttribute("model")).containsKey("object2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void sessionAttributeExposureWithInterface() throws Exception {
|
||||||
|
@SuppressWarnings("serial") DispatcherServlet servlet = new DispatcherServlet() {
|
||||||
|
@Override
|
||||||
|
protected WebApplicationContext createWebApplicationContext(WebApplicationContext parent) {
|
||||||
|
GenericWebApplicationContext wac = new GenericWebApplicationContext();
|
||||||
|
wac.registerBeanDefinition("controller", new RootBeanDefinition(MySessionAttributesControllerImpl.class));
|
||||||
|
wac.registerBeanDefinition("viewResolver", new RootBeanDefinition(ModelExposingViewResolver.class));
|
||||||
|
DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
|
||||||
|
autoProxyCreator.setBeanFactory(wac.getBeanFactory());
|
||||||
|
wac.getBeanFactory().addBeanPostProcessor(autoProxyCreator);
|
||||||
|
wac.getBeanFactory().registerSingleton("advisor", new DefaultPointcutAdvisor(new SimpleTraceInterceptor()));
|
||||||
|
wac.refresh();
|
||||||
|
return wac;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
servlet.init(new MockServletConfig());
|
||||||
|
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/myPage");
|
||||||
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||||
|
servlet.service(request, response);
|
||||||
|
HttpSession session = request.getSession();
|
||||||
|
assertTrue(session.getAttribute("object1") != null);
|
||||||
|
assertTrue(session.getAttribute("object2") != null);
|
||||||
|
assertTrue(((Map) session.getAttribute("model")).containsKey("object1"));
|
||||||
|
assertTrue(((Map) session.getAttribute("model")).containsKey("object2"));
|
||||||
|
|
||||||
|
request = new MockHttpServletRequest("POST", "/myPage");
|
||||||
|
request.setSession(session);
|
||||||
|
response = new MockHttpServletResponse();
|
||||||
|
servlet.service(request, response);
|
||||||
|
assertTrue(session.getAttribute("object1") != null);
|
||||||
|
assertTrue(session.getAttribute("object2") != null);
|
||||||
|
assertTrue(((Map) session.getAttribute("model")).containsKey("object1"));
|
||||||
|
assertTrue(((Map) session.getAttribute("model")).containsKey("object2"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void adaptedHandleMethods() throws Exception {
|
public void adaptedHandleMethods() throws Exception {
|
||||||
doTestAdaptedHandleMethods(MyAdaptedController.class);
|
doTestAdaptedHandleMethods(MyAdaptedController.class);
|
||||||
|
|
@ -1474,6 +1510,31 @@ public class ServletAnnotationControllerTests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/myPage")
|
||||||
|
@SessionAttributes({"object1", "object2"})
|
||||||
|
public interface MySessionAttributesControllerIfc {
|
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.GET)
|
||||||
|
String get(Model model);
|
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.POST)
|
||||||
|
String post(@ModelAttribute("object1") Object object1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public static class MySessionAttributesControllerImpl implements MySessionAttributesControllerIfc {
|
||||||
|
|
||||||
|
public String get(Model model) {
|
||||||
|
model.addAttribute("object1", new Object());
|
||||||
|
model.addAttribute("object2", new Object());
|
||||||
|
return "myPage";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String post(@ModelAttribute("object1") Object object1) {
|
||||||
|
//do something with object1
|
||||||
|
return "myPage";
|
||||||
|
}
|
||||||
|
}
|
||||||
@Controller
|
@Controller
|
||||||
public static class MyFormController {
|
public static class MyFormController {
|
||||||
|
|
||||||
|
|
@ -1909,9 +1970,10 @@ public class ServletAnnotationControllerTests {
|
||||||
|
|
||||||
@RequestMapping("/myPath.do")
|
@RequestMapping("/myPath.do")
|
||||||
public void myHandle(@RequestParam(value = "id", defaultValue = "foo") String id,
|
public void myHandle(@RequestParam(value = "id", defaultValue = "foo") String id,
|
||||||
|
@RequestParam(value = "otherId", required = false) String id2,
|
||||||
@RequestHeader(defaultValue = "bar") String header,
|
@RequestHeader(defaultValue = "bar") String header,
|
||||||
HttpServletResponse response) throws IOException {
|
HttpServletResponse response) throws IOException {
|
||||||
response.getWriter().write(String.valueOf(id) + "-" + String.valueOf(header));
|
response.getWriter().write(String.valueOf(id) + "-" + String.valueOf(id2) + "-" + String.valueOf(header));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue