Interceptorむずかしい

昨日書いた自作のInterceptorはSAStruts内のクラスであるActionMessagesThrowsInterceptorを参考に、ややシンプルにすることができた。ま、requestの取得だけだけど。

public class UserDtoAutoRetrieveInterceptor extends AbstractInterceptor {

    private static final long serialVersionUID = 1L;
    
    public UserService userService;
    public UserDto userDto;
    
    public Object invoke(MethodInvocation invocation) throws Throwable {
        
        HttpServletRequest request = RequestUtil.getRequest();
        Principal userPrincipal = request.getUserPrincipal();
        
        User user = userService.getUserDto(userPrincipal.getName());
        Beans.copy(user, userDto).execute();
        
        System.out.println("###" + userDto);
        
        return invocation.proceed();
    }

}

しかしUserDtoはActionで宣言しているものとは別物管理となる。UserDtoは@Component(instance = InstanceType.SESSION) と設定しているから、うまくやってくれそうなものなんだけど。

ここはべたべたのsession管理とするか。いい方法がみつかったらそっちにするということで。