0

私は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;
    }
}
4

2 に答える 2

1

スプリングインターセプターがいいでしょう。

于 2013-05-26T15:47:26.557 に答える