我从我的JSP页面得到了拆分的输出,首先是writer.write()输出,然后是省略标记的JSP。
我有以下简单的JSP页面
<%@ 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>我通过这个小函数包含了它:
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);
}我现在得到的回应是
My page titleMypagebody....
<html>
<head>
<title></title>中间有4个换行符。我认为这一定是一个编译器错误,但清除缓存(IntelliJ)并重新启动,重新部署到Tomcat8并不能修复它。一切正常工作,直到服务器重启,但现在没有修复它。我甚至在JSP上运行调试器,一切都按顺序进行。
更新:
它在没有标记"<% response.getWriter().write(obj.getTitle());%>“的情况下运行良好,但是当标记存在时,正文和标题都会写在顶部,模板会写在底部。getTitle()返回一个字符串。
发布于 2016-08-20 09:27:05
我很快就弄明白了,但这相当棘手。"response.getWriter()“和JSP的"out”变量(我不知道这个变量)不是一回事。
巧合的是,我的代码以前是可以工作的。
在使用"out“(JSPWriter)变量之前,我还必须包含jsp.api.jar。
相关信息请点击此处:
https://stackoverflow.com/questions/39049514
复制相似问题