相关疑难解决方法(0)

Spring MVC会话属性访问

有没有办法在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)

java spring spring-mvc

21
推荐指数
3
解决办法
5万
查看次数

Spring mvc - WebArgumentResolver的实现

我想创建自定义控制器方法参数注释.

下面这个问题如何使用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)

spring annotations spring-mvc

2
推荐指数
1
解决办法
8154
查看次数

标签 统计

spring ×2

spring-mvc ×2

annotations ×1

java ×1