如何告诉请求 getparameter 将空值视为 0?
How do I tell request getparameter to treat null value as 0?
所以我目前正在 spring 引导中进行 crud,我被困在这个地方,我想将 null id 视为 0,我尝试了以下版本并且它 returns
`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);
}
你必须避免在 if 条件之前 Long.parseLong(req.getParameter("id"));
如下:
@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);
}
您需要在调用 Long.parseLong
之前检查 id
是否为空或 null
,否则会抛出异常。
Long id;
if (StringUtils.hasText(req.getParameter("id")) {
Long.parseLong(req.getParameter("id"));
} else {
id = 0L;
}
如果参数既不是 empty/null 也不是数字,您仍然会以异常结束。我建议捕获异常并适当处理它。
try {
Long.parseLong(req.getParameter("id"))
} catch(NumberFormatException e) {
// log.warn(e)
return Collections.emptyList();
}
所以我目前正在 spring 引导中进行 crud,我被困在这个地方,我想将 null id 视为 0,我尝试了以下版本并且它 returns
`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);
}
你必须避免在 if 条件之前 Long.parseLong(req.getParameter("id"));
如下:
@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);
}
您需要在调用 Long.parseLong
之前检查 id
是否为空或 null
,否则会抛出异常。
Long id;
if (StringUtils.hasText(req.getParameter("id")) {
Long.parseLong(req.getParameter("id"));
} else {
id = 0L;
}
如果参数既不是 empty/null 也不是数字,您仍然会以异常结束。我建议捕获异常并适当处理它。
try {
Long.parseLong(req.getParameter("id"))
} catch(NumberFormatException e) {
// log.warn(e)
return Collections.emptyList();
}