【问题标题】:validation on JSP page does not workJSP 页面上的验证不起作用
【发布时间】:2014-12-11 12:50:36
【问题描述】:

我有以下带有一个输入文本框的 jsp 页面,在输入数字后,该页面被重定向到一个 servlet,我在其中检索该数字并将其显示在页面上。我正在尝试在 JavaScript 中进行验证,但尽管如此,它仍在执行 servlet,即使验证返回 false 并且我在以下行的 servlet 上的 doGet 方法中得到 java.lang.NumberFormatException: For input string: ""int max = Integer.parseInt(request.getParameter("lengthTxt"));。为什么它似乎绕过验证并仍然执行 servlet ?如何解决?感谢您的帮助!

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function validateForm()
{
    if(document.frm.lengthTxt.value=="")
    {
      alert("Number should not be left blank");
      document.frm.lengthTxt.focus();
      return false;
    }

}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Length calc</title>
</head>
<body>
<h3>enter length</h3>
<form name=frm action="MyServlet" onSubmit="return validateForm();">

    <input name="lengthTxt" />
    <br>
    <br>
    <input type = "submit" value = "Submit"/>

</form>

</body>
</html>

【问题讨论】:

  • 这是一个 Javascript 问题,而不是 Java(JSP、Servlet 等)。尝试使用 Chrome DevTool 调试 javascript
  • document.frm.username 字段在哪里??
  • @Vedang Shrimankar 我的拼写错误,应该是 lengthTxt
  • 现在检查它是否有效??
  • 你遇到什么错误??重定向到服务器端?

标签: java javascript jsp validation servlets


【解决方案1】:

如果你在字段中输入了错误的名称来聚焦,那么它会发生,否则它应该可以正常工作。请在 java Script 函数中再次检查。

【讨论】:

    【解决方案2】:

    这看起来很疯狂。在某些浏览器上检查此代码后。它会执行表单提交事件,即使 onsubmit 返回这样的错误值。

    onsubmit="return validateForm()";
    

    这样您就可以使用event.preventDefault() 函数防止进一步的表单执行。

    因此在onsubmit 中使用条件语句将节省时间。下面是要使用的完整语句。

    <form onsubmit="event.preventDefault(); return validateMyForm();">
    

    还有什么,jz评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 2011-09-27
      • 2012-09-20
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      相关资源
      最近更新 更多