sendRedirect()的问题

时间:2014-04-11 09:54:05

标签: java html jsp

我创建一个Web界面是用户可以在一个公式中键入som的东西: 但是,当我按下确定按钮时,我收到此错误代码:

java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed

我的代码:

<%!
String validate (String input) {
        String error = "";
        int receptnr = 0;
        String error1 = "";
        int varenr = 0;
        try {
                    receptnr = Integer.parseInt(input);
                    varenr= Integer.parseInt(input);

        } catch (Exception e) {
                    error = error +"Receptnummeret skal være et tal";
                    error1 = error1 +"Varenummer skal være et tal";
        }
        if (receptnr > 99999999||receptnr<1||varenr > 99999999||varenr<1)
                        error = error + " Receptnummeret skal være mellem 1 og 99999999 år";
                        error1 = error1 + " Varenummeret skal være mellem 1 og 99999999 år";
        return error;


}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<title>Indtastningsformular</title>
<body>
<%
        if (request.getMethod().equals("POST")) { // brugeren har tastet på submit

                    String receptnr = request.getParameter("receptnr");
                    String error = validate(receptnr);
                    String varenr = request.getParameter("varenr");
                    String error1 = validate(varenr);

                    if (error.equals(""))
                    {
                                    System.out.print(receptnr);
                                    response.sendRedirect("VisOKData.jsp?receptnr_resultat="+receptnr);


                    }
                    else

                                    response.sendRedirect("VisError.jsp?error_resultat="+error);
                /*  
                    if(error1.equals("")){
                        System.out.print(varenr);
                        response.sendRedirect("VisOKData.jsp?varenr_resultat="+varenr);

                    }
                    else
                        response.sendRedirect("VisError.jsp?error_resultat="+error);
                 */                 
        }
%>
        <form method="POST" action="InputForm.jsp">
            Receptnr:
                        <input type="text" name="receptnr" value="Indtast dit receptnr her">
            <br />          
            Varenr:
                        <input type="text" name="varenr" value="Indtast dit varenr her">
                        <br />
                                                        <input type="submit" value="OK">
        </form>

我想要做的是给公式一些条件,然后将页面重定向到错误信息或确定消息

1 个答案:

答案 0 :(得分:3)

这很简单,因为你将页面重定向两次。

如果您的第一个(if)条件为true或false,则页面已经重定向到其他页面。

之后它将再次重定向。

因此解决方案是将两个条件转换为一个条件。 那样: -

 if (error.equals(""))
{
    System.out.print(receptnr);
   if(error1.equals(""))
     {
        System.out.print(varenr);
        response.sendRedirect("VisOKData.jsp?varenr_resultat="+varenr);
     }
   else
    {
       response.sendRedirect("VisError.jsp?error_resultat="+error);
    }
}
else
 {
     response.sendRedirect("VisError.jsp?error_resultat="+error);
 }