1

SpringMVCアプリケーションに次のメソッドスケルトンがあります。

@RequestMapping(value = "/activateMember/{token}", method = RequestMethod.GET, produces = "text/html")
public String activateMember(@PathVariable("token") String token) {
...
}

token何らかの理由でが無効な場合、エラーメッセージを表示しようとしています。ただしModelAttribute、メソッド引数にはありません。実際には必要ありません。しかしもちろん、aとそれに対応するがないため、 ErrorsorBindingResults引数を使用することはできません。ModelAttributeform

だから私の質問は:上記のメソッドシグネチャが与えられ、ModelAttributeを導入せず
にエラーメッセージを表示するための推奨される方法は何ですか?

4

1 に答える 1

1

Stringメソッドから返されたのがビュー名 (Spring のデフォルト) である場合は、この場合のビューを作成して、次のようにします。

@RequestMapping()
public String activateMember(@PathVariable("token") String token) {
    if(checkToken(token)){
        doProcess();
        return "userprofile";
    } else {
        return "badtoken"
    }
}

より複雑なケースでは、不良トークンに関連する例外の階層がある場合があります。(トークンの有効期限が切れている、トークンが正しくないなど)。@ExceptionHandlerを同じコントローラーに登録できます。

@RequestMapping()
public String activateMember(@PathVariable("token") String token) {
    return activate(token); // This method may throw TokenException and subclasses.
}

@ExceptionHandler(TokenException.class)
public ModelAndView tokenException(TokenException e){
    // some code
    return new ModelAndView("badtoken", "exception", e);
}
于 2013-02-19T12:05:21.077 に答える