If you attempt to present a ZIP file from a
JSF view, JSF will corrupt it. Same for PDF's,
Word documents, Excel spreadsheets and any other non-HTML file format. JSF is expecting to output HTML and
only HTML.
Use an ordinary
servlet to present the ZIP file for download. JSF is not greedy, it won't mind.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.