복붙노트

[SPRING] Spring MVC로 메소드 애트리뷰트 (매개 변수)로 세션 속성을 전달하는 법

SPRING

Spring MVC로 메소드 애트리뷰트 (매개 변수)로 세션 속성을 전달하는 법

간단히 말해서, 나는 다음과 같은 것을 원한다.

public String action(@SessionAttribute User user) {..}

대신에

public String action(HttpSession session) {
     User user = session.getAttribute("user");
}

주로 다음을 위해서 :

해결법

  1. ==============================

    1.해결책을 찾았습니다.

    해결책을 찾았습니다.

    아이디어는 @SessionAttribute (또는 @SessionParam)와 같은 사용자 정의 주석을 처리하는 AnnotationMethodHandlerAdapter에 대한 사용자 지정 WebArgumentResolver를 등록하는 것입니다.

    거기에 게시 된 코드 중 하나는 값을 지정하지 않으면 param.getParameterName ()을 사용할 수 있다는 것입니다.

  2. ==============================

    2.Google을 통해 도착하는 사용자는 적어도 4.3.2.RELEASE부터 Spring에 @SessionAttribute 주석이 내장되어 있습니다.

    Google을 통해 도착하는 사용자는 적어도 4.3.2.RELEASE부터 Spring에 @SessionAttribute 주석이 내장되어 있습니다.

    public String action(
        @SessionAttribute(required=false, name="user") User user) {
    
        // ...
    
    }
    

    사용자 지정 솔루션은 더 이상 필요하지 않습니다.

  3. ==============================

    3.메서드 매개 변수로 @ModelAttribute ( "user") User 사용자를 사용하고 메소드에서 사용자 객체를 사용하더라도 세션에서 업데이트 된 사용자를 갖게됩니다. 속성 이름은 세션 속성 이름 "user"와 일치해야합니다.

    메서드 매개 변수로 @ModelAttribute ( "user") User 사용자를 사용하고 메소드에서 사용자 객체를 사용하더라도 세션에서 업데이트 된 사용자를 갖게됩니다. 속성 이름은 세션 속성 이름 "user"와 일치해야합니다.

    public String myMethod( @ModelAttribute("user") User user ){
    
     System.out.println(user.getDetails());
    
    }
    
  4. from https://stackoverflow.com/questions/3621266/how-to-pass-a-session-attribute-as-method-argument-parameter-with-spring-mvc by cc-by-sa and MIT license