私はHandlerMethodArgumentResolverComposite
自分のプロジェクトにカスタムを実装することに慣れていましたが、今ではいくつかの方法で繰り返しコードブロックを持っています
...
if (param != null){
return SiteMap.withRedirect(HOME); // resolves to "redirect:/home"
}
...
コントローラーメソッドの外部でこのブロックを行う無駄のない方法はありますか?
前もって感謝します。
それに対する答え:
HandlerMethod.getMethodAnnotation(Class<T>)
とても役に立ちます:D
https://gist.github.com/dgomesbr/5657473
public class UserRequiredAnnotationInterceptor extends HandlerInterceptorAdapter
{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
{
if (handler == null)
{
return true;
}
if (((HandlerMethod) handler).getMethodAnnotation(RequiredUser.class) != null)
{
final Object userkey = request.getSession().getAttribute(LoginFilter.CURRENT_LOGGED_USER_ATTRIBUTE);
if (userkey == null)
{
response.sendRedirect(SiteMap.HOME_REDIRECT);
return false;
}
}
return true;
}
}