内联css阻止jsp response.sendRedirect工作

时间:2013-11-04 16:56:48

标签: css jsp redirect response.redirect

我的任务是为现有的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 ----

1 个答案:

答案 0 :(得分:0)

所以,我认为问题在于你正在推动响应并且它正在做出响应。一旦你开始推送响应的主体并且它已经提交,你就不能再发送重定向,因为通过HTTP头实现了重定向(这就是sendRedirect的工作方式)。

因此,您需要将表单处理“向上”移动,以便sendRedirect更早出现。

或者,您可以尝试使用自动刷新和刷新缓冲区设置: <%@page buffer="xxxkb" autoflush="true" %> 但这可能不起作用。