umleiten von jsf?

Ich arbeite an der Anwendung mit jsp, jstl und jsf für meine college-Projekt, das gesagt wird, ich bin auch sehr neu in jsf.

Alles läuft Super bisher. Allerdings habe ich offensichtlich ein problem, herauszufinden, wie zu tun umleiten von managed bean zur Seite mit dinamyc Parameter.
Zum Beispiel article.jsp?article_id=2

Kann jemand mir sagen, wie es gemacht wird ?

Ich versuche zu verwenden somethinng wie

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

Aber die Fehlermeldung:

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)

Ich versuche zu verwenden

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

Aber wieder eine Fehlermeldung.

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

Kann jemand bitte mir sagen, wie ich die Weiterleitung von verwalteten java-bean-bei der Arbeit mit jsf ?

Balg ist mein code (vielleicht ist etwas falsch mit, dass und das ist, warum die Umleitung nicht funktioniert).

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;
        }

Vielen Dank im Voraus.

InformationsquelleAutor Dmitris | 2009-06-10

Schreibe einen Kommentar