1

@exceptionhandlerを使用してHTTP Status 500 - Expected session attributeを取得したいと思います。ユーザーにエラーを表示しているのと同じページにメッセージを返したいと思います。

この例外を処理し、別のページにリダイレクトする代わりにビューにメッセージを返す方法の例を教えてください。

これは私がこれまでに持っているものですが、ビュー内のアイテムにエラーメッセージが設定されていません。

@ExceptionHandler(HttpSessionRequiredException.class)
    public RedirectView handleHttpSessionRequiredException(Exception ex, HttpServletRequest request) throws Exception
    {
        logger.info("In the handleHttpSessionRequiredException Handler Method");
        String referrer = request.getHeader("referer");
        RedirectView redirectView = new RedirectView(referrer);
        redirectView.addStaticAttribute("errorMessage","Execute A Query Then Retry");
        return redirectView;
    }

意見

<label id="errorMessage" name="errorMessage">${errorMessage}</label>
4

2 に答える 2

1

リファラーを取得して転送またはリダイレクトできます。例えば

@ExceptionHandler(HttpSessionRequiredException.class)
public String (HttpServletRequest request) {
    String referrer = request.getHeader("referer");
    ...
    FlashMap flashMap = RequestContextUtils.getOutputFlashMap(request);
flashMap.put("errorMessage","Execute A Query Then Retry");
    return "redirect:/my/url";
}

リダイレクト URL は、アプリケーション パスに対して相対的です。リファラーから抽出できます。

于 2013-05-03T12:31:59.790 に答える
1

次のようなことを行うことで、 @ExceptionHandler メソッドから ModelAndView を返すことができます。

@ExceptionHandler(IOException.class)
public ModelAndView handleIOException(IOException ex) {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("someObject", new SomeObject());
    modelAndView.setViewName("someView");
    return modelAndView;
}

問題は、以前に表示されていた現在のページを把握することです。私の知る限り、現在のモデルとビューを ExceptionHandler メソッド内から取得する方法はないため、使用するビューを知る良い方法はありません。

あなたの最善の策は、コントローラーで例外をキャッチして処理することだと思います。

于 2013-05-03T05:52:52.857 に答える