推荐的方法来显示错误消息,而不需要使用Spring MVC的@ModelAttribute

时间:2013-02-19 11:32:53

标签: spring-mvc

我在 Spring MVC应用程序中有以下方法框架

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

如果由于某种原因token无效,我会尝试显示错误消息。但是我在方法参数中没有ModelAttribute,我真的不想要一个。但是,由于缺少Errors及其对应的BindingResults,我当然不能使用ModelAttributeform参数。

所以我的问题是:
在给定上述方法签名且未引入ModelAttribute的情况下,显示错误消息的建议方法是什么?

1 个答案:

答案 0 :(得分:1)

如果从方法返回的String是viewname(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);
}