I have a Spring boot project with version 2.6.4. And after I updated the jasperreports dependency to 6.19.0 all my RestControllers returns now XML instead of JSON Where can I change this, without changing to
@GetMapping(produces = {"application/json"})
on each method?
I just have same issue today, I checked with Chrome and saw it doesn't add application/json in Accept header. My solution is create a wrapper filter:
@Component
public class JsonRequestHeaderFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper((HttpServletRequest) request) {
@Override
public Enumeration<String> getHeaders(String name) {
if (name.equals("Accept")) {
Set<String> customHeaders = new HashSet<String>();
Enumeration<String> curHeaders = super.getHeaders(name);
while (curHeaders.hasMoreElements()) {
String header = curHeaders.nextElement();
customHeaders.add(MediaType.APPLICATION_JSON_VALUE.concat(";").concat(header));
}
return Collections.enumeration(customHeaders);
}
return super.getHeaders(name);
}
};
chain.doFilter(requestWrapper, response);
}
}