JSP:使用javascript提交表单

JSP:使用javascript提交表单,javascript,html,forms,jsp,onclick,Javascript,Html,Forms,Jsp,Onclick,(我知道问题有点长,但我相信解决方法很简单,所以如果有人能帮我看一下,我会非常感激) 我正在尝试编写一个学校系统,在那里你可以在网页上输入学生的姓名、年份、年级,并保存学生的信息以生成一个列表。我希望在网页上有两个“按钮”: 一个是“保存和下一个”,即如果您完成了一个学生信息的输入,单击此按钮,信息将被保存,网页将更新以输入下一个学生信息 第二个是“保存并完成”,即,如果这是您要输入的最后一个学生,请单击此按钮并保存最后一个学生信息,网页将重定向到下一页,其中显示所有学生信息的列表 为了实现这一

(我知道问题有点长,但我相信解决方法很简单,所以如果有人能帮我看一下,我会非常感激)

我正在尝试编写一个学校系统,在那里你可以在网页上输入学生的姓名、年份、年级,并保存学生的信息以生成一个列表。我希望在网页上有两个“按钮”:

一个是“保存和下一个”,即如果您完成了一个学生信息的输入,单击此按钮,信息将被保存,网页将更新以输入下一个学生信息

第二个是“保存并完成”,即,如果这是您要输入的最后一个学生,请单击此按钮并保存最后一个学生信息,网页将重定向到下一页,其中显示所有学生信息的列表

为了实现这一点,在JSP中,我使用了两个HTML表单,其中一个我使用javascript尝试提交到servlet,但我一定做了一些错误的事情,因为它不能正常工作:

这是我的密码:

InputGrade.jsp:

<html>
  <head>
  <title>Title</title>
  </head>
  <body>
如果用户按“保存并完成”,即提交第二份表单,并再次将最后输入的学生添加到列表中,并重定向到显示整个列表的下一个网页:

}else if (request.getParameter("flag").equals("2")) {
request.getParameter("Grade");
....
inputStList.add(findstudent);
request.getSession().setAttribute("inputStList",inputStList);
response.sendRedirect("ShowList.jsp"); }
这就是问题所在:当提交第一个表单点击“保存并下一步”按钮时,它工作正常,但当提交第二个表单点击“保存并完成”按钮时,它返回错误


因此,如果有人能帮我看一看,我将不胜感激。

这就是为什么您可以得到
NullpointerException

拇指规则
如果要比较字符串,请首先检查它是否为空。

根据你的要求,我给你一个解决方案,你怎么能做到这一点。 假设您的表单如下所示:

<html>
    <head>

    <script>
        function _submit(flagVal) {
            document.getElementById('flagValId').value=flagVal;
            document.getElementById('someFormId').submit();
        }
    </script>
    </head>

    <body>
        <form action = "InputGradeServlet" method="POST" id="someFormId">
            <table>
            <tr>
                <td>
                    Enter Student Name: <input type="text" id="stName" name ="stName" />
                </td>
                <td>
                    Enter Subject: <input type="text" id="Subject" name = "Subject" />
                </td>
                <td>
                Enter Grade: <input type = "text" id="Grade" name = "Grade" />
                </td>
                <td>
                    <input type="button" value="save and next" onclick="_submit('1')"/>
                    <input type="button" value="save and exit" onclick="_submit('2')"/>
                </td>
             </tr>
             </table>
            <input type="hidden" id="flagValId"  name = "flag"  value=""/>
         </form>
    </body>
</html>

希望这会有所帮助。

您不会得到form1值。您发布form2值,因此得到空错误

请试一试:

function finSaveFunc() {
  var stName = document.getElementById("stName")
  var Subject = document.getElementById("Subject")
  var Grade = document.getElementById("Grade")
  var newForm = document
    .getElementById("form2")
    .appendChild(stName)
    .appendChild(Subject)
    .appendChild(Grade);
  newForm.submit();
}

它显示了什么错误?它显示了NullPointerException您没有通过点击“接受”按钮接受我的答案。
if (request.getParameter("flag").equals("1")) {
      request.getParameter("Grade");
      ...... (get other info: name, year ect)
      inputStList.add(findstudent); //add student entered to the list
      response.sendRedirect("InputGrade.jsp");
}
}
}
}else if (request.getParameter("flag").equals("2")) {
request.getParameter("Grade");
....
inputStList.add(findstudent);
request.getSession().setAttribute("inputStList",inputStList);
response.sendRedirect("ShowList.jsp"); }
<html>
    <head>

    <script>
        function _submit(flagVal) {
            document.getElementById('flagValId').value=flagVal;
            document.getElementById('someFormId').submit();
        }
    </script>
    </head>

    <body>
        <form action = "InputGradeServlet" method="POST" id="someFormId">
            <table>
            <tr>
                <td>
                    Enter Student Name: <input type="text" id="stName" name ="stName" />
                </td>
                <td>
                    Enter Subject: <input type="text" id="Subject" name = "Subject" />
                </td>
                <td>
                Enter Grade: <input type = "text" id="Grade" name = "Grade" />
                </td>
                <td>
                    <input type="button" value="save and next" onclick="_submit('1')"/>
                    <input type="button" value="save and exit" onclick="_submit('2')"/>
                </td>
             </tr>
             </table>
            <input type="hidden" id="flagValId"  name = "flag"  value=""/>
         </form>
    </body>
</html>
if (request.getParameter("flag")!=null && request.getParameter("flag").equals("1")) {
    //Add your student in this block and show the input page again.
    response.sendRedirect("InputGrade.jsp");
}else  if (request.getParameter("flag")!=null && request.getParameter("flag").equals("2")) {
        //Add your student in this block and show the list.
        response.sendRedirect("ShowList.jsp");
}
function finSaveFunc() {
  var stName = document.getElementById("stName")
  var Subject = document.getElementById("Subject")
  var Grade = document.getElementById("Grade")
  var newForm = document
    .getElementById("form2")
    .appendChild(stName)
    .appendChild(Subject)
    .appendChild(Grade);
  newForm.submit();
}