Qual é a diferença entre redirecionamento e navegação / encaminhamento e quando usar o que?

Qual é a diferença entre uma navegação no JSF

FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().getNavigationHandler().handleNavigation(context, null, url);

e um redirecionamento

HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.sendRedirect(url);

e como decidir quando usar o que?

O problema com a navegação é que o URL da página não é alterado, a menosfaces-redirect=true é adicionado à cadeia de consulta do URL de navegação. No entanto, no meu caso, acrescentandofaces-redirect=true Lança erro se eu quiser redirecionar para uma página não-JSF como uma página HTML simples.

E outra opção é como BalusC sugerido emErro de redirecionamento do JSF 2.0

questionAnswers(1)

yourAnswerToTheQuestion