Я пытаюсь создать простой перехватчик, который проверяет, указал ли пользователь атрибут языка в заголовках или нет. Я все настроил, и все работает хорошо, но если я отправляю запрос более одного раза, я вижу, что сообщение об ошибке снова добавляется в массив и теперь отображается дважды.
Это код для Перехватчик:
public class LanguageInterceptor extends HandlerInterceptorAdapter {
private List errors = new ArrayList();
private BadRequestException badRequestException = new BadRequestException();
private BadRequestExceptionData badRequestExceptionData = new BadRequestExceptionData();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String LocaleLang = request.getHeader("Accept-Language");
if(null == LocaleLang) {
badRequestException.setStatus(HttpStatus.BAD_REQUEST.value());
badRequestException.setTitle("Illegal request");
errors.add("No language attribute specified in your request!");
badRequestExceptionData.setPageSize(errors);
badRequestException.setErrors(badRequestExceptionData);
ObjectMapper objectMapper = new ObjectMapper();
response.setStatus(HttpStatus.BAD_REQUEST.value());
response.getWriter().write(objectMapper.writeValueAsString(badRequestException));
response.setHeader("Content-Type", "application/json");
return false;
}
return true;
}
}
Пример ответа:
{
"status": 400,
"errors": {
"pageSize": [
"No language specified in your request!",
"No language specified in your request!"
]
},
"title": "Illegal request"
}
Я делаю что-то не так или мне нужно очистить объект после выполнения функции preHandle? Приношу свои извинения, если этот вопрос звучит немного скучно, я все еще новичок в Java и Spring boot.