2

コントローラーがあるとします:

@Controller

public class SomeController {

    @RequestMapping(value = "{id}/object.do")
    public String showObject(@PathVariable("id") Integer id,
                            HttpServletRequest request) {
            //do smth
            return "somePage";
        }
}

「id」が数値ではなく、「aaa/object.do」のような文字列の場合、Tomcat はエラーを表示します - 「クライアントから送信されたリクエストは構文的に正しくありません。」

「id」パス変数の型が正しくない場合にのみ表示されるエラー ページを構成する方法はありますか?

4

1 に答える 1

4

この特定のエラーに対して@ExceptionHandlerでこれを処理できます ( TypeMismatchExceptionであると思われます)

@ExceptionHandler(TypeMismatchException.class)
public ModelAndView handleTypeMismatchException(TypeMismatchException ex) {
    //TODO log
    // Return something reasonable to the end user.
    ...
}

@ExceptionHandler基本的に、通常のハンドラーとほぼ同じ機能を備えていることに注意してください。

@RequestMapping アノテーションが付けられた標準のコントローラ メソッドと同様に、@ExceptionHandler メソッドのメソッド引数と戻り値は非常に柔軟です。

于 2013-03-15T11:38:47.443 に答える