servlet接受复选框中的空值

问题描述 投票:1回答:2

enter image description herehere我有一个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处理复选框中的空值

java jsp servlets java-ee java-ee-6
2个回答
0
投票

如何解决这个问题:

选项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

注意:

您应该将InsertPost.add(...)调用放在try-catch块中,以便在将数据插入数据库时​​处理异常,然后将其作为最佳实践的一部分显示在UI上。另外,检查名称和年龄是否为空并处理它。

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

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

错误原因


您的数据库不期望在字段qazxsw poi上显示空值


0
投票

//一个建议:处理null并替换为空String

favorite languages

我希望它对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.