Обработчик исключений записывает трассировку стека на странице вместо отображения страницы с ошибкойJAVA

Программисты JAVA общаются здесь
Anonymous
Обработчик исключений записывает трассировку стека на странице вместо отображения страницы с ошибкой

Сообщение Anonymous »

У меня есть контроллер API, когда я помещаю неверные данные в параметр, трассировка стека ошибок распечатывается на странице вместо отображения страницы с ошибкой...
Это пример URL-адреса, когда я получаю печать трассировки стека:
http://localhost:9080/myApp/employeePage?id=invalidId
Но если, например, я введу неправильное сопоставление контроллера (employeePage правильное):
http://localhost:9080/myApp/employeePageInvalid123страница с ошибкой отображается без проблем. То есть, похоже, не ловится только при вводе параметров? В моем контроллере я выдаю RuntimeException.
Я застрял на этом целый день, и мне бы хотелось получить любые советы/предложения/улучшения. Спасибо x.getField() + ": "+ x.getDefaultMessage())
.collect(Collectors.toList());

ApiErrorResponse apiError = new ApiErrorResponse();
apiError.setErrorCode(String.valueOf(status.value()));
apiError.setStatus(String.valueOf(status.value()));
apiError.setMessage(errors);

return new ResponseEntity(apiError,status);
}

// handle @Validated for controller path variables
@ExceptionHandler(ConstraintViolationException.class)
public ResponseEntity constraintViolationException(HttpServletResponse response) throws IOException {
ApiErrorResponse apiError = new ApiErrorResponse();
apiError.setErrorCode(String.valueOf(HttpStatus.BAD_REQUEST.value()));
apiError.setStatus(String.valueOf(HttpStatus.BAD_REQUEST.value()));
apiError.setException("ConstraintViolationException");
return new ResponseEntity(apiError,HttpStatus.BAD_REQUEST);
}
}

Контроллер ошибок
@Controller
public class ErrorController {

@RequestMapping(value = "errors", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView renderErrorPage(HttpServletRequest httpRequest) throws JsonProcessingException {
ModelAndView modelAndView = new ModelAndView();
String errorMsg = "";
int httpErrorCode = getErrorCode(httpRequest);
boolean isJson = false;
if (httpRequest.getContentType() != null && httpRequest.getContentType().equalsIgnoreCase("application/json")){
isJson=true;
}

switch (httpErrorCode) {
case 400: {
if (!isJson) {
modelAndView.setViewName("/errors/error_400");
}
errorMsg = "Http Error Code: 400. Bad Request";
break;
}
case 401: {
errorMsg = "Http Error Code: 401. Unauthorized";
break;
}
case 404: {
if (!isJson) {
modelAndView.setViewName("/errors/error_404");
}
errorMsg = "Http Error Code: 404. Resource not found";
break;
}
case 500: {
if (!isJson) {
modelAndView.setViewName("/errors/error_500");
}
errorMsg = "Http Error Code: 500. Internal Server Error";
break;
}
}
//errorPage.addObject("errorMsg", errorMsg);
if (!isJson)
return modelAndView;
else {
/*
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, false);

modelAndView = new ModelAndView(new MappingJackson2JsonView(mapper));

Error baseApiResponse = new Error();
baseApiResponse.setStatus(String.valueOf(httpErrorCode));
baseApiResponse.setErrorCode(String.valueOf(httpErrorCode));
baseApiResponse.setException(errorMsg);

modelAndView.addObject(baseApiResponse);
*/
return null;
}
}

private int getErrorCode(HttpServletRequest httpRequest) {
return (Integer) httpRequest
.getAttribute("javax.servlet.error.status_code");
}
}

ErrorPageController
@Controller
public class ErrorPageController {

@RequestMapping(value="/errors/error_404", method = { RequestMethod.GET, RequestMethod.POST })
public String error404(){
return "digi/errors/error_404";
}

@RequestMapping(value = "/errors/error_500", method = { RequestMethod.GET, RequestMethod.POST })
public String error500(){
return "digi/errors/error_500";
}

@RequestMapping(value = "/errors/error_400", method = { RequestMethod.GET, RequestMethod.POST })
public String error400(){
return "digi/errors/error_400";
}

}

В моем web.xml у меня есть это:

/errors



Подробнее здесь: https://stackoverflow.com/questions/787 ... error-page

Вернуться в «JAVA»