redirection à partir de l'aci?

Je suis en train de travailler sur une application avec jsp, jstl et jsf pour mon projet de collège, c'est dit, je suis ainsi très nouveau pour les jsf.

Tout va bien jusqu'à présent. Cependant, je semble avoir un problème pour comprendre comment faire de redirection à partir de managed bean à la page avec dinamyc paramètres.
Par exemple article.jsp?article_id=2

Quelqu'un peut-il me dire comment il est fait ?

J'ai essayé d'utiliser somethinng comme

FacesContext.getCurrentInstance().getExternalContext().dispatch("faces/article.jsp2?article_id=" + articleId);

Mais d'erreur:

javax.servlet.ServletException: #{postComment.postClick}: javax.faces.FacesException: javax.servlet.ServletException: javax.faces.component.UIViewRoot cannot be cast to com.sun.faces.application.StateManagerImpl$TreeNode
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

J'ai essayé d'utiliser

response.sendRedirect("faces/article.jsp2?article_id=" + articleId);
            return;

Mais encore une fois d'avoir une erreur.

javax.servlet.ServletException: Cannot forward after response has been committed
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

Quelqu'un peut-il me dire comment puis-je rediriger des managed bean java lorsque vous travaillez avec la jsf ?

Soufflet est mon code (peut-être quelque chose de mal avec cela et c'est pourquoi la redirection ne fonctionne pas).

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
String articleId = request.getSession().getAttribute("article_id").toString();
//String articleId  = request.getParameter("article_id");
String authorName = request.getSession().getAttribute("user_name").toString();
java.util.Calendar calendar = java.util.Calendar.getInstance();
String commentDate = String.valueOf(calendar.get(java.util.Calendar.DAY_OF_MONTH)) + ".";
commentDate += String.valueOf(calendar.get(java.util.Calendar.MONTH)) + ".";
commentDate += String.valueOf(calendar.get(java.util.Calendar.YEAR));
ArrayList error = new ArrayList();
if(commentName.contains("<"))
{
error.add("Comment name contains illegal characters");
}
if(commentBody.isEmpty() && commentBody.contains("<script"))
{
error.add("Your message body contains illegal characters");
}
if(error.size() > 0)
{
request.getSession().setAttribute("error", error);
error.clear();
FacesContext.getCurrentInstance().getExternalContext().dispatch("article.jsp2?article_id=" + articleId);
}
else
{
Comment comment = new Comment();
comment.setCommentAuthor(authorName);
comment.setCommentBody(commentBody);
comment.setCommentDate(commentDate);
comment.setCommentName(commentName);
comment.setArticleId(articleId);
DisplayArticleIO addComment = new DisplayArticleIO();
addComment.postComment(comment);
//           FacesContext.getCurrentInstance().getExternalContext().dispatch("faces/article.jsp2?article_id=" + articleId);
response.sendRedirect("faces/article.jsp2?article_id=" + articleId);
return;
}

Vous en remercie d'avance.

OriginalL'auteur Dmitris | 2009-06-10