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管理とするか。いい方法がみつかったらそっちにするということで。