title: Choosing how to pass parameters to a target bean/page using JSF
body: <p>I have been using JSF for a few years now, but I still have doubts when it comes to deciding how to pass parameters to a target page/bean.</p>
  
  <p>I do think this question is a bit complex, and that some may tell me to break it down into smaller questions. But, I also think that the answer to all of the questions bellow are related, and that it addresses the lack of intuitiveness when all you want JSF to do is: "Go to that page and pass this as a parameter".</p>
  
  <ol>
  <li>First, how to decide between Forward and Redirect?</li>
  <li>After that, how to choose between <code>h:commandLink</code>/<code>h:commandButton</code>, <code>h:link</code> or <code>h:outputLink</code>?</li>
  <li>Then, combined with the option I choose above, should I use <code>f:param</code> or <code>f:setPropertyActionListener</code>? Will both properly pass parameters to the target bean, independently of its scope?</li>
  <li>Finally, on the target bean/page, when should I use <code>f:viewParam</code>, or recover parameters from the request programmatically?</li>
  </ol>