I'm not sure about the "()" on your ActionListener. I don't think that the parentheses should be there. I rarely use ActionListener, since action is simpler and does the same thing for most needs.
However,
JSF is based on Inversion of Control, and the way you normally get information from one bean into another bean is to inject the information source bean into the information destination bean. Once that is done, the destination bean can solicit the source bean for the information using a POJO "get" method and you don't need to go anywhere near FacesContext. Or, for that matter, any other javax.faces class.
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.