That's generally one of 2 things:
1. You didn't declare fileDownload as a public no-argument method returning a
String in the backing bean.
2. You have a problem with some of the data that's being sent when you click the link. The
JSF messages tag will usually display a message, if that's the problem.
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.