gpt4 book ai didi

java - NumberFormatException -- 验证 JSP 文件中的表单提交?

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:58 25 4
gpt4 key购买 nike

我紧迫的问题是如何在 JSP Web 表单中最好地处理此异常,但我相信下面的内容也可能能够提供答案。

我一直在搞一个java项目,我已经将其实现为applet/JFrame以及通过JSP实现的Web表单。在我上一个类(本质上是 Java 1)中,我学到了通过 ActionListener 中的 try/catch block 处理用户输入数据时的异常(例如 NumberFormatException)的方法。

示例:

private ActionListener L_Weight() {
return new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
double weight = Person.DEFAULT_WEIGHT;
try {
weight = Double.parseDouble(ae.getActionCommand());
}
catch (NumberFormatException e) {
//e.printStackTrace();
}
person = new Person(
person.getGender(),
weight,
person.getAge(),
person.getNumberOfDrinks(),
person.getHoursSinceFirstDrink());
view.updatePerson(person);
}

};
}

因此,虽然这适用于 applet/JFrame,但它似乎不是 try/catch 的最佳用法,除了忽略它之外,我不知道如何处理 NumberFormatException,而且它在 Web 表单方面对我没有任何作用。

所以在网络方面,我找到了各种处理异常/错误的想法,但似乎没有一个是最好的选择。我目前最喜欢的是将 onsubmit="return checkForm(this)" 添加到我的表单提交中,其中 checkForm() 是 javascript 代码,如果提交了有效数据,它将返回 true。这看起来仍然是一个无关紧要的步骤,但是除了将变量声明为字符串并将它们解析为 double 以便我可以在 java 端进行 try/catch 错误处理之外,我不确定还可以在哪里验证提交。

所以我实现了 checkForm() 函数并且它正在工作,只是想知道这是否是 JSP 中表单验证的良好实践:

<form name="Name Input Form" action="index.jsp" method="POST" onsubmit="return checkForm(this)">

<script type="text/javascript">
function checkForm(form) {
var result = true;
var numbers = /^[0-9|\.]+$/;
var checkFields = new Array(
form.age,
form.weight,
form.drinks,
form.hours);

for (i=0; i < checkFields.length; i++) {
if (!checkFields[i].value.match(numbers)) {
alert(checkFields[i].name + " field must be a number");
checkFields[i].focus();
result = false;
break;
}
}
return result;
}

function optionChange(form) {
if (checkForm(form)) {
form.submit();
}

}

我还将性别选择设置为一个下拉菜单,调用 optionChange 函数:

<select name="gender" id="gender" onchange="optionChange(this.form)">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
<小时/>

欢迎您查看web appsource

<小时/>

编辑:

发布这个问题后,我意识到我还有另一个与此相关的问题,在 Person 类中创建一个构造函数,将性别、体重、年龄、饮料和时间作为 String 参数,然后处理转换为各自的类型,这会是一个糟糕的选择吗?我可以将错误处理放入 try/catch block 中,但我会(如我所见)再次利用错误处理来强制验证。从这里开始,我不需要担心验证,因为 java 代码需要字符串,但这似乎是不必要的折射工作。

最佳答案

您可以使用JQuery's change功能。因此,您向每个文本字段添加一个监听器,每次更改时您都可以检查文本是否是有效数字(如果不是,则显示某种红色内联消息)。

您还可以在数字字段中使用 html5 输入类型数字。

关于java - NumberFormatException -- 验证 JSP 文件中的表单提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22108774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com