Реализация
A HandlerInterceptor
, как предлагается в другом месте, - это то, что вам нужно. Из ваших комментариев в ответ на этот ответ, однако вы неправильно понимаете API :
Я прочитал метод preHandle в ссылке на документацию, которую вы дали ... но он возвращает логическое значение ... могу ли явернуть вывод в формате JSON, используя этот метод?
Как отмечают документы API, только булевы сигналы ( для каркаса ) о необходимости продолжения обработки:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/HandlerInterceptor.html#preHandle-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-java.lang.Object-
возвращает true, если цепочка выполнения должна продолжить работу со следующим перехватчиком или самим обработчиком. Иначе, DispatcherServlet предполагает, что этот перехватчик уже имел дело с самим ответом.
Итак, чтобы вернуть JSON:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception{
if(someCondition){
return true; //continue processing
}else{
response.getOutputStream().write("{\"message\" : \"some text\"}");
response.setContentType("text/json");
response.setStatus(...); //some http error code?
response.getoutputStream().flush();
return false; //i have written some JSON to the response. Processing stops here
}
}