gpt4 book ai didi

java - servlet 接受复选框中的空值

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

enter image description here这里我有一个jsp页面,允许用户应用他的名字,他的年龄和他掌握的编程语言

<form action="./getPost" method="POST" >

<label> name </label> <input type="text" name="name" > <br><br>
<label> age </label> &nbsp <input type="text" name="age" > <br><br>


<label> programming langage </label> <br>
<input type="checkbox" name="fav" value="java"> java <br>
<input type="checkbox" name="fav" value="php"> php <br>
<input type="checkbox" name="fav" value="python"> python <br><br>

<input type="submit" value="submit post">

</form>

这就是servlet获取数据的方式

        String name = request.getParameter("name");
String age = request.getParameter("age");
String[] lang = request.getParameterValues("fav");

InsertPost.add(new Post(name, age, lang));

当我填写表单的所有字段并单击按钮时,它将数据插入数据库。然后我测试在不选择任何导致错误(java.lang.NullPointerException)的复选框的情况下提交它。问题是,如果用户想要选择或不选择,我想保留这个可选手段不需要。那么如何让 servlet 处理复选框中的空值

最佳答案

如何解决这个问题:

选项 1: (发送空字符串而不是 null)假设您的表对字段 fav 有非空约束。

String name = request.getParameter("name");
String age = request.getParameter("age");
List<String> lang = request.getParameterValues("fav");
if(lang==null) {
lang = new String[] {""};
}
InsertPost.add(new Post(name, age, lang));
//not recommended as it will add 1-byte of empty string even if there is no fav language

注意:

You should put the InsertPost.add(...) call in a try-catch block to handle exception during inserting data to DB and then show it on UI as a part of best practices. Also, put a check if the name and age are null and handle it.

选项 2: (发送 null 并从表中的 fav 字段上删除 null 约束)

//how you are doing it previously will work.
InsertPost.add(new Post(name, age, lang));

错误原因

<小时/>

您的数据库不希望归档的最喜欢的语言为空值

关于java - servlet 接受复选框中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55050569/

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