2013-02-19 2 views
1

У меня есть следующий методы скелета в приложении Spring MVC:Рекомендуемый способ для отображения сообщения об ошибке, не прибегая к @ModelAttribute с 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?

ответ

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); 
} 
Смежные вопросы