1

我在应用程序中有一个显示数字的下拉字段。

当用户没有从下拉列表中选择任何值时,我想将 null 插入到数据库中。

如何将 Integer 包装类初始化为 null?

我试过了

 Integer  days = new Integer(null);
        if (request.getParameter("days").equals("")) {
        } else {
            days  = 
                    Integer.parseInt(request.getParameter("days"));
        }

但是我收到以下错误,那么声明 Integer 变量的正确方法是什么?

NumberFormatException at test.doPost(Controller.java:23);

如何初始化 Integer 变量,以便如果用户未选择任何值,则应插入 null。

4

6 回答 6

7

您应该使用 null 进行初始化:

    Integer  days = null;
    if (request.getParameter("days") != null && !request.getParameter("days").isEmpty()) {
        days = Integer.parseInt(request.getParameter("days"));
    }

更新:最好先验证它的整数:

    Integer  days = null;
    if(request.getParameter("days")!=null && request.getParameter("days").matches("^\\d+$"))
    {
        days = Integer.parseInt(request.getParameter("days"));
    }

更新 2:为了能够在 DB 中插入 null:

if (project.getDays() != null)
   callablestatement.setInt(2, project.getDays());
else 
   callablestatement.setNull(2, java.sql.Types.INTEGER);
于 2013-09-29T10:53:58.697 回答
1

怎么样 :

Integer days = null;
String param = request.getParameter("days");
if (param != null && !"".equals(param)) {
   days  = Integer.parseInt(request.getParameter("days"));
}
于 2013-09-29T10:52:51.497 回答
1

如何将 days 对象设置为null然后检查 days 对象是否null为空:

Integer days = null;
if (request.getParameter("days") != null && !request.getParameter("days").isEmpty()) {
    // rest of code.
于 2013-09-29T10:53:58.573 回答
1

您不能信任请求中 days 参数的值。
如果某些客户端将传递无效值怎么办?(非数字字符串)。
因此,您应该NumberFormatException在尝试解析参数值时进行捕捉。

Integer days = null;
String parameterValue = request.getParameter("days");
if (parameterValue != null && !parameterValue.isEmpty()) {
  try {
    days = Integer.parseInt(parameterValue);
  } catch (NumberFormatException e) {
    // log or something
  }
}
于 2013-09-29T10:55:15.720 回答
1

除了其他人评论过的声明。

您得到的NumberFormatException原因request.getParameter("days")是返回非整数值文本或空值。parseInt 方法 NumberFormatException在获得不是有效整数值的字符串输入时抛出。

于 2013-09-29T10:55:33.943 回答
1

尝试/捕获:

Integer days = null;
try {
    days = Integer.parseInt(request.getParameter("days"));
} catch (final NumberFormatException ex) {
    // ignore
}

或与番石榴Ints

Integer days = null;
final String param = request.getParameter("days");
if (param != null) {
    days = Ints.tryParse(param);
}

这样,您就可以避免NumberFormatExceptionif “days” 不可解析。

于 2013-09-29T11:13:01.110 回答