我在 Spring MVC应用程序中有以下方法框架:
@RequestMapping(value = "/activateMember/{token}", method = RequestMethod.GET, produces = "text/html")
public String activateMember(@PathVariable("token") String token) {
...
}
如果由于某种原因token
无效,我会尝试显示错误消息。但是我在方法参数中没有ModelAttribute
,我真的不想要一个。但是,由于缺少Errors
及其对应的BindingResults
,我当然不能使用ModelAttribute
或form
参数。
所以我的问题是:
在给定上述方法签名且未引入ModelAttribute的情况下,显示错误消息的建议方法是什么?
答案 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);
}