Как пружинный MVC обрабатывает ответное тело и просматривает исключения?
У меня есть контроллер как
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/1")
@ResponseBody
public String test1(){
Object o = null;
o.toString();
return "I ma test one!";
}
@RequestMapping("/2")
public String test2(){
Object o = null;
o.toString();
return "test";
}
}
Можно ли создать ControllerAdvice(s) для обработки метода контроллера как другого результата, не перемещая их в сообщения в разные классы. Я имею в виду: 1. test1 возвращает сообщение String: если есть исключение, обработайте его с помощью handleError1 и верните сообщение. 2. test1 возвращает представление: если есть исключение, обработайте его с помощью handleError2 и верните / перенаправьте в представление.
@ControllerAdvice
public class AdviceController {
@ExceptionHandler({ NullPointerException.class })
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public Map handleError1(IllegalStateException ex, HttpServletRequest request) {
Map map = new HashMap();
map.put("code","1000");
map.put("message","NullPointerException of Object");
return map;
}
@ExceptionHandler(NullPointerException.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
public String handleError2(MultipartException e, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", e.getCause().getMessage());
redirectAttributes.addFlashAttribute("code", "1000");
return "redirect:/error";
}
}
если использовать @ControllerAdvice(annotations=RestController.class) @ControllerAdvice(annotations=Controller.class)
Нам нужно создать больше контроллеров.