Estoy trabajando en la aplicación con jsp, jstl y jsf para mi proyecto universitario, eso está dicho, yo también soy muy nuevo en jsf.redirigir desde jsf?
Todo va muy bien hasta ahora. Sin embargo, parece tener un problema para averiguar cómo redirigir desde beans administrados a páginas con parámetros dinamyc. Por ejemplo article.jsp?article_id=2
¿Alguien puede decirme cómo se hace?
I estado tratando de utilizar como somethinng
FacesContext.getCurrentInstance().getExternalContext().dispatch("faces/article.jsp2?article_id=" + articleId);
Pero conseguir el error:
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)
he estado tratando de utilizar
response.sendRedirect("faces/article.jsp2?article_id=" + articleId);
return;
Pero una vez más conseguir un error.
javax.servlet.ServletException: Cannot forward after response has been committed
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
Puede alguien por favor dígame cómo vuelvo a dirigir a partir de Java Bean administrado cuando se trabaja con JSF?
Abajo está mi código (tal vez algo malo con eso y es por eso que el redireccionamiento no funciona).
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;
}
Gracias de antemano.
Se enumeran algunas sugerencias muy agradables. Muchas gracias, definitivamente lo investigaré. – Dmitris
De nada: P – laginimaineb