Tôi đang làm việc trên ứng dụng với jsp, jstl và jsf cho dự án đại học của tôi, điều đó đang được nói, tôi cũng rất mới với jsf.chuyển hướng từ jsf?
Mọi thứ đang diễn ra tuyệt vời cho đến nay. Tuy nhiên, tôi dường như có một vấn đề tìm ra cách chuyển hướng từ bean được quản lý sang trang với các tham số dinamyc. Ví dụ: article.jsp?article_id=2
Ai đó có thể cho tôi biết cách thực hiện?
Tôi đã cố gắng để sử dụng somethinng như
FacesContext.getCurrentInstance().getExternalContext().dispatch("faces/article.jsp2?article_id=" + articleId);
Nhưng nhận được lỗi:
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)
Tôi đã cố gắng để sử dụng
response.sendRedirect("faces/article.jsp2?article_id=" + articleId);
return;
Nhưng một lần nữa nhận được một lỗi.
javax.servlet.ServletException: Cannot forward after response has been committed
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
Ai đó có thể cho tôi biết cách chuyển hướng từ bean java được quản lý khi làm việc với jsf?
Dưới đây là mã của tôi (có thể đã xảy ra sự cố với điều đó và đó là lý do tại sao chuyển hướng không hoạt động).
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;
}
Cảm ơn bạn trước.
Bạn liệt kê một số gợi ý rất tốt đẹp. Cảm ơn rất nhiều, chắc chắn sẽ xem xét nó. – Dmitris
bạn được chào đón: P – laginimaineb