我的任务是为现有的JSP站点应用新的外观。
但是,我遇到的问题是我的CSS阻止了JSP功能 - 这对我来说似乎非常奇怪。
基本上,JSP中有一行代码,一旦提交了表单,就会重定向页面。
String redirectUrl = "Absolute path to next page"
response.sendRedirect(redirectUrl);
出于开发目的,我在页面中创建我的CSS - 内联。当我这样做时,sendRedirect不起作用。查看页面的来源,我可以看到页面只有部分加载,并在我的CSS中途结束。 (无论我放什么CSS,页面的来源总是以我的CSS结尾)
如果我将CSS移动到外部文件(它最终将会是这样),sendRederct就可以正常工作。
我能想到的唯一一件事就是,JSP只能处理一定数量的代码行,而我的CSS会使页面膨胀太多而无法处理。是这样的吗?
如果没有,还有什么可能导致问题?
编辑 - 这是我的代码
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-GB">
<head>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<meta charset="utf-8" /><%@include file="/WEB-INF/ss_layout_head_info.jsp"%>
<%=serverbean.evalResInc("internet_2.0_opening_head_content")%>
<%-- Instantiate the form validation bean and supply the error message map --%>
<%@ page import="company.forms.FeedbackFormBean" %>
<%@ page import="java.util.*" %>
<%
java.util.Map errorMap = new java.util.HashMap();;
errorMap.put(FeedbackFormBean.ERR_FULLNAME_ENTER, serverbean.evalIdcScp("langRef(#active.ssLanguage, \"ww2SpecifyFullName\")"));
errorMap.put(FeedbackFormBean.ERR_EMAIL_ENTER, serverbean.evalIdcScp("langRef(#active.ssLanguage, \"ww2SpecifyEmailAddress\")"));
errorMap.put(FeedbackFormBean.ERR_EMAIL_INVALID, serverbean.evalIdcScp("langRef(#active.ssLanguage, \"ww2EmailAddressNotValid\")"));
errorMap.put(FeedbackFormBean.ERR_COMMENTS_ENTER, serverbean.evalIdcScp("langRef(#active.ssLanguage, \"ww2SpecifyComments\")"));
errorMap.put(FeedbackFormBean.ERR_POSSIBLE_SPAM, serverbean.evalIdcScp("langRef(#active.ssLanguage, \"ww2PossibleSpamInput\")"));
%>
<%String httpAbsoluteCgiPath = serverbean.evalIdcScp("HttpAbsoluteCgiPath");%>
<%String siteId = serverbean.evalIdcScp("siteId");%>
<%String nodeId = serverbean.evalIdcScp("nodeId");%>
<%String fs = serverbean.evalIdcScp("fs");%>
<jsp:useBean id="form" class="company.forms.FeedbackFormBean" scope="request">
<jsp:setProperty name="form" property="errorMessages" value='<%= errorMap %>'/>
<jsp:setProperty name="form" property="siteId" value='<%= siteId %>'/>
</jsp:useBean>
<%if ("true".equals(request.getParameter("process"))) { %>
<jsp:setProperty name="form" property="*" />
<%if (form.process()) {
serverbean.putLocal("fullName", form.getFullName());
serverbean.putLocal("email", form.getEmail());
serverbean.putLocal("phone", form.getPhone());
serverbean.putLocal("comments", form.getComments());
serverbean.putLocal("dUser", "sysadmin");
serverbean.putLocal("IdcService", "INTERNET_2.0_CHECKIN_FEEDBACK_RESPONSE");
serverbean.executeService();
// Go to success page
String redirectUrl = httpAbsoluteCgiPath + "?IdcService=SS_GET_PAGE&nodeId=" + siteId + "FeedbackForm&fs=1";
response.sendRedirect(redirectUrl);
return;
}
}
---- DON'T THINK YOU WILL NEED ANYTHING PAST HERE ----
答案 0 :(得分:0)
所以,我认为问题在于你正在推动响应并且它正在做出响应。一旦你开始推送响应的主体并且它已经提交,你就不能再发送重定向,因为通过HTTP头实现了重定向(这就是sendRedirect的工作方式)。
因此,您需要将表单处理“向上”移动,以便sendRedirect更早出现。
或者,您可以尝试使用自动刷新和刷新缓冲区设置:
<%@page buffer="xxxkb" autoflush="true" %>
但这可能不起作用。