2012-09-26 3 views
1

사용자가 로그온하는 MVC 스프링 응용 프로그램이 있습니다. 여기에 User @ SessionAttribute가 저장됩니다. POST 요청에서 Customer 객체를 업데이트 할 때이 객체에 추가 할 세션 사용자 정보를 원합니다. 고객 POST에서 @ModelAttribute ("user") 사용자 개체에 액세스 할 때 내 문제가 발생합니다. 스프링은 요청 매개 변수를 바인딩합니다. 즉, User.name에는 제출 된 양식의 Customer.name 값이 있습니다.spring mvc가 세션 요청을 덮어 쓰지 못하도록 요청하는 방법은 무엇입니까?

NB 모든 컨트롤러가 @ AppessionAttributes가 선언 된 AppController 하위 클래스입니다. 그러나 그것이 단일 컨트롤러라면 원칙이 동일 할 것입니다.

스프링 바인딩 양식을 방지하려면 고객 이름 값을 User.name으로?

는 (나는 webflow이에 대한 더 적합 프레임 워크가 될 것입니다 의심하지만,이를 사용하여 다시 작성하는 지금 사용할 수있는 시간이 없어) 모델이 사용하는 속성의

답변

1

당신은 할 수 있습니다 또는 특정 필드의 바인딩 허용 @InitBinder :

@InitBinder("user") 
public void configureBindingOfUser(WebDataBinder binder) { 
    binder.setAllowedFields(); // No fields allowed 
} 

그러나, 나는 그것이 현재 사용자 또는 기타 유사한 개체를 저장 @SessionAttributes을 사용하는 것이 좋습니다 생각하지 않습니다. @SessionAttributes은 원래 세션에 액세스하는 일반적인 목적이 아닌 GETPOST 요청 사이의 양식지지 상태를 유지하도록 설계되었습니다.

아마도 이런 종류의 정보에 액세스하려면 session- 범위 콩 또는 사용자 지정 인수 해결자를 사용하는 것이 좋습니다.

+1

감사합니다. 나는 명시 적으로 HttpSession에 저장하는 것을 끝내었다. 낡은 걸까?하지만 나도 마찬가지야. – souter

관련 문제