当前位置: 首页 > 知识库问答 >
问题:

如何告诉request getparameter将空值视为0?

曹昊焱
2023-03-14

所以我现在正在spring boot中做一个crud,我被困在这个地方,我想把null id当作0,我尝试了下面的版本,它返回了

`java.lang.NumberFormatException: For input string: ""`

   @ResponseBody
    public String checkMobileEmail(HttpServletRequest req, Model model) {
        String mobile = req.getParameter("mobile");
        String email = req.getParameter("email");
        Long id = Long.parseLong(req.getParameter("id"));
        if (req.getParameter("id").equals("")) {
            id  = 0L;
        } 
        System.err.println("id : " + id + " mobile : " + mobile + " email: " + email);
        return service.findByEmailAndMobile(email,mobile,id);
    }

共有2个答案

郜杰
2023-03-14

在调用Long之前,需要检查id是否为空或null。parseLong或引发异常。

Long id;
if (StringUtils.hasText(req.getParameter("id")) {
    Long.parseLong(req.getParameter("id"));
} else {
    id  = 0L;
}

如果参数既不是空的/null,也不是数字,则仍然会出现异常。我建议捕获异常并适当地处理它。

try {
    Long.parseLong(req.getParameter("id"))
} catch(NumberFormatException e) {
    // log.warn(e) 
    return Collections.emptyList();
}
潘秦斩
2023-03-14

您必须避免Long。parseLong(请求getParameter(“id”)) 在if条件之前,如下所示:

@ResponseBody
public String checkMobileEmail(HttpServletRequest req, Model model) {
   String mobile = req.getParameter("mobile");
   String email = req.getParameter("email");
   String idParameter = req.getParameter("id");
   Long id = 0L;
   if (idParameter != null && !idParameter.equals("")) {
       id = Long.parseLong(idParameter);
   } 
   System.err.println("id : " + id + " mobile : " + mobile + " email: " + email);
   return service.findByEmailAndMobile(email,mobile,id);
}

 类似资料:
  • 我有课 并希望将其转换为XML。但是,如果flag不为true,我需要在序列化期间忽略flag字段。 因此,如果flag=true,我希望得到:

  • 问题内容: 我有一个click事件发生在我的自定义指令范围之外,因此,我使用jQuery.click()侦听器并在我的范围内调用一个函数,而不是使用“ ng- click”属性,如下所示: close()是一个简单的函数,如下所示: 在我看来,我有一个绑定到isOpen的“ ng-show”元素,如下所示: 调试时,我发现正在调用close(),isOpen被更新为false,但是AngularJ

  • 有没有办法按照使用SBT 0.13.7提供的方式处理“scala库”JAR? 我正在使用sbt proguard来打包我的JAR,稍后将其动态加载到一个应用程序中,该应用程序在类路径上已经有一个适当版本的scala库。

  • 如果字段的值为NULL,如何将jackson配置为在序列化期间忽略该字段的值。 例如:

  • 问题内容: 我有一个SwiftUI视图,其中包含一个名为的EnvironmentObject 。然后,它读取其方法中的值。我希望这可以将我的视图绑定到该属性,以便在属性更新时重新呈现该属性,但这似乎没有发生。 这是一个错误吗?如果没有,将视图绑定到SwiftUI中环境对象的嵌套属性的惯用方式是什么? 具体来说,我的模型看起来像这样… 我的观点看起来像这样… 当我运行应用程序并单击标签时,属性会增加