すべてのアクションと戻り値をログに記録するコントローラー用のログマネージャーを作成しています
私のコントローラーは次のように定義されています。
@Controller
@RequestMapping(value="/ajax/user")
public class UserController extends AbstractController{
@RequestMapping(value="/signup")
public @ResponseBody ActionResponse signup(@Valid SignupModel sign) {
ActionResponse response=new ActionRespone();
response.setMessage("This is a test message");
return response;
}
}
そして、各ハンドラーの出力をログに記録する HandlerInterceptor を定義しました。
@Component
public class ControllerInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return true;
}
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
LogManager log=new LogManager();
log.setMessage();//I need returned ActionResponse here
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
ここで log.setMessage(); を使用します。サインアップ メソッドから返される ActionResponse のメッセージ (これはテスト メッセージです) が必要です
これどうやってするの?