Avatar billede thinge Nybegynder
29. september 2006 - 18:07 Der er 10 kommentarer og
1 løsning

include JSP i servlet, med PrintWriter

Kan desværre ikke vise fejlen(er på besøg), men hvorfor kan dette ikke lade sig gøre?

PrintWriter out = response.getWriter();
out.println("<HTML>");
include("/test.jsp");
out.println("</HTML>");
out.close();

thinge
Avatar billede thinge Nybegynder
29. september 2006 - 21:39 #1
Sådan ser metoden ud:
    public void createPage(){
        response.setContentType("text/html");
        PrintWriter out;
        try {
            out = getResponse().getWriter();
            out.println("<HTML><HEAD><TITLE></TITLE></HEAD>");
            include("/untitled1.jsp");
            out.flush();
            out.println("</HTML>");
            out.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

fejlen ser sådan ud:
2006-09-29 17:23:23.363 NOTIFICATION  J2EE JSP0008 Unable to dispatch JSP Page : java.lang.IllegalStateException: Writer already retrieved

nogle ideer??

thinge
Avatar billede arne_v Ekspert
30. september 2006 - 03:18 #2
hvad er det for en include metode ?

jeg kan ikke finde den i docs for HttpServlet
Avatar billede thinge Nybegynder
30. september 2006 - 08:16 #3
metoden er ned arvet:

    public void include(String jspPage){
        try {
            getServletConfig().getServletContext().getRequestDispatcher(jspPage).include(request, response); // Includes a JSP-PAGE
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch (ServletException e) {
            e.printStackTrace();
        }
    }
Avatar billede thinge Nybegynder
30. september 2006 - 08:20 #4
jeg har 3 klasser:

1. klasse:

package hkclient.core;

import java.io.Serializable;

public interface Page extends Serializable{
    public void createPage();
}

2. klasse:
package hkclient.core;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public abstract class AbstractHKPage extends HttpServlet implements Page {
    protected HttpServletRequest request;
    protected HttpServletResponse response;
   
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }
   
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
        this.request = request;
        this.response = response;
        createPage();
    }
   
    public void include(String jspPage){
        try {
            getServletConfig().getServletContext().getRequestDispatcher(jspPage).include(request, response); // Includes a JSP-PAGE
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch (ServletException e) {
            e.printStackTrace();
        }
    }

    public HttpServletRequest getRequest() {
        return request;
    }

    public HttpServletResponse getResponse() {
        return response;
    }
}

3. klasse:
package hkclient.structuredpages;

import hkclient.core.AbstractHKPage;

import java.io.IOException;
import java.io.PrintWriter;

public class DefaultPage extends AbstractHKPage{
   
    public void createPage(){
        response.setContentType("text/html");
        PrintWriter out = null;
        try {
            out = getResponse().getWriter();
            out.println("<HTML><HEAD><TITLE></TITLE></HEAD>");
            out.close();
            include("/untitled1.jsp");
            out = getResponse().getWriter();
            out.println("</HTML>");
            out.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Avatar billede thinge Nybegynder
30. september 2006 - 08:27 #5
3. så sådan ud fra starten:

package hkclient.structuredpages;

import hkclient.core.AbstractHKPage;

import java.io.IOException;
import java.io.PrintWriter;

public class DefaultPage extends AbstractHKPage{
   
    public void createPage(){
        response.setContentType("text/html");
        PrintWriter out = null;
        try {
            out = getResponse().getWriter();
            out.println("<HTML><HEAD><TITLE></TITLE></HEAD>");
            include("/untitled1.jsp");
            out.println("</HTML>");
            out.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Avatar billede arne_v Ekspert
01. oktober 2006 - 03:28 #6
Du bruger Oracle ?
Avatar billede arne_v Ekspert
01. oktober 2006 - 03:35 #7
Avatar billede thinge Nybegynder
01. oktober 2006 - 11:11 #8
OK det er en bug
Jeg tester lige

thinge
Avatar billede arne_v Ekspert
01. oktober 2006 - 17:39 #9
med et workaround forslag: getOutputStream() som kan wrappes i en ny PrintWriter
Avatar billede thinge Nybegynder
01. oktober 2006 - 20:58 #10
vil gøre.

Smider du lige et svar?
Og takker for hjælpen

thinge
Avatar billede arne_v Ekspert
01. oktober 2006 - 23:20 #11
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester