When I try to download some file off JSF. It gets “Cannot forward a response that is already committed”. It is obvious that the response is already committed but JSF still tries to do something to the response. The easiest way to fix this is to make sure after the download, do this to tell JSF stop adding stuff to the Response:
context = FacesContext.getCurrentInstance();
if (context != null) context.responseComplete();
This works like a charm.