有没有办法在spring 3.0下访问HttpSession而不将其包含在方法签名中?我真正想做的是能够传递来自可以为空的HttpSession的值.
像这样的东西:
@RequestMapping("/myHomePage")
public ModelAndView show(UserSecurityContext ctx) {}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
@RequestMapping("/myHomePage")
public ModelAndView show(HttpSession session) {
UserSecurityContext ctx = (UserSecurityContext) session.getAttribute("userSecurityCtx");
}
Run Code Online (Sandbox Code Playgroud) 我想创建自定义控制器方法参数注释.
下面这个问题如何使用Spring MVC将会话属性作为方法参数(参数)传递并遵循@Bozho建议我有这样的事情:
我的解析器
public class SessionAttributeAnnotationResolver implements WebArgumentResolver {
public Object resolveArgument(MethodParameter parameter,
NativeWebRequest request) throws Exception {
System.out.println("I am here");
Annotation[] parameterAnnotations = parameter.getParameterAnnotations();
Class<?> parameterType = parameter.getParameterType();
for (Annotation parameterAnnotation : parameterAnnotations) {
if (SessionAttribute.class.isInstance(parameterAnnotation)) {
SessionAttribute sessionAttribute = (SessionAttribute) parameterAnnotation;
String parameterName = sessionAttribute.value();
boolean required = sessionAttribute.required();
HttpServletRequest httprequest = (HttpServletRequest) request
.getNativeRequest();
HttpSession session = httprequest.getSession(false);
Object result = null;
if (session != null) {
result = session.getAttribute(parameterName);
}
if …Run Code Online (Sandbox Code Playgroud)