2016-08-20 2 views
1

Ich bekomme Split-Ausgabe von meiner JSP-Seite, mit writer.write() zuerst und zweiten die JSP mit Tags ausgelassen.JSP-Seite wird von Tag-Ausgabe getrennt

Ich habe die folgende einfache JSP-Seite

<%@ page import="com.AAA.SiteTemplate.RenderPageInterface" %> 
<%@ page import="java.io.Writer" %> 
<%@ page import="java.io.IOException" %> 
<%@ page import="com.NatureRelaxation.SiteTemplate.RenderPageInterfaceNull" %><%-- 
    Created by IntelliJ IDEA. 
    User: 
--%> 
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
<head> 
    <% 
     RenderPageInterface obj = (RenderPageInterface) request.getAttribute("renderPageInterface"); 
     if (obj == null){ 
      obj = new RenderPageInterfaceNull(); 
     } 
    %> 
    <title><% response.getWriter().write(obj.getTitle()); %></title> 
    <style type="text/css"> 
    </style> 
</head> 
<body> 
<% 
obj.renderHTML(response.getWriter()); 
%> 
</body> 
</html> 

und ich schließe es über diese kleine Funktion:

public static void doRequest(HttpServletRequest req, HttpServletResponse res, RenderPageInterface renderPageInterface) throws ServletException, IOException{ 
    req.setAttribute("renderPageInterface", renderPageInterface); 
    RequestDispatcher rd = req.getRequestDispatcher("/WEB-INF/templates/header.jsp"); 
    rd.include(req, res); 
} 

Die Antwort, die ich jetzt bin immer ist

My page titleMypagebody.... 





<html> 
<head> 

    <title></title> 

etc In der Mitte befinden sich 4 Zeilenumbrüche. Ich denke, es muss ein Compiler-Fehler sein, aber das Löschen von Caches (IntelliJ) und das Neustarten, das erneute Bereitstellen auf Tomcat 8 behebt es nicht. Alles funktionierte wie normal, bis der Server neu gestartet wurde, aber nichts behebt es jetzt. Ich starte sogar den Debugger auf der JSP und alles geht in Reihenfolge.

Update:

Es läuft gut ohne diesen Tag "<% response.getWriter() schreiben (obj.getTitle());%>", aber wenn der Tag da ist, sowohl der Körper und die Titel wird oben und die Vorlage unten geschrieben. getTitle() gibt einen String zurück.

Antwort

1

Ich fand es schnell genug heraus, aber es war ziemlich schwierig. "response.getWriter()" und JSPs "out" -Variable (von denen ich nichts wusste), sind nicht dasselbe.

Es ist zufällig, dass mein Code zuvor funktioniert hat.

Ich musste auch jsp.api.jar enthalten, bevor ich die Variable "out" (JSPWriter) verwenden konnte.

Relevante Informationen hier:

Difference between JspWriter and PrintWriter in Java EE?

what is difference between JspWriter and PrintWriter?

Verwandte Themen