글로벌 기본 예외 핸들러를 만들었으며 컨트롤러에서이 글로벌 캐치를 사용하려고합니다.예외 핸들러
@ControllerAdvice
class GlobalDefaultExceptionHandler {
public static final String DEFAULT_ERROR_VIEW = "error";
@ResponseStatus(value= HttpStatus.CONFLICT,
reason="Data integrity violation")
@ExceptionHandler(DataIntegrityViolationException.class)
public void dataIntegrityViolationException() {
//do nothing, because I want just catch it
//and make use of it in controller.
}
}
이것은이 오류를 사용하려는 나의 컨트롤러 방법입니다. 이 같은
@PostMapping("/add")
public String addTask(@Valid BasicForm basicForm, BindingResult result, RedirectAttributes redirectAttrs) {
if (result.hasErrors()) {
redirectAttrs.addFlashAttribute("org.springframework.validation.BindingResult.basicForm", result);
redirectAttrs.addFlashAttribute("basicForm", basicForm);
return "user-add-page";
}
taskService.add(basicForm);
redirectAttrs.addAttribute("id", basicForm.getId());
return "redirect:/user/{id}";
}
그리고 마지막으로 내가 할 무언가 :
if (result.hasErrors() || dataIntegrityViolationException()) {
나는 이것에 대해 많이 읽혀질 수 있지만, 그래서 일부를이 방법을 공유하시기 바랍니다 그것을 활용하는 경우에도 가능하다면 심각 단서 없어 지식 :)
그게 어떻게 작동하지 않습니다 ... 컨트롤러 조언 (기본적으로) 컨트롤러 주위에 래핑하고 예외를 처리 할, 컨트롤을 다시 컨트롤러로 전달되지 않습니다. –
내 문제를 어떻게 해결할 수 있는지 실감을 줄 수 있습니까? ExceptionHandler는 어디에 두어야합니까? – degath
컨트롤러에 대한 조언이 자동으로 적용됩니다 ... –