我有一个条件陈述如下
if (Sizeval != null) {
query.addFilterQuery("size:" + Sizeval);
}
在调试中,我可以看到 Sizeval = null
的值我从请求对象获取此值,如下所示
Sizeval = (String) request.getParameter("Attr");
但即使Sizeval为null,它也会执行query.addFilterQuery语句。
任何纠正这个问题的建议plz
答案 0 :(得分:3)
重新解释您的问题。给定
HttpServletRequest requst = ...
String Sizeval = (String) request.getParameter("Attr");
if (Sizeval != null) {
query.addFilterQuery("size:" + Sizeval);
}
您看到if
的正文已执行(暗示Sizeval
不为空)但仍然Sizeval
似乎为空(如调试器或构造过滤器。)
说明:Sizeval
不为null,但具有文字值"null"
。这将添加"size:null"
过滤器查询。此外,当在日志或调试器中查看变量时,它似乎是null
。
验证执行
if (Sizeval != null) {
if ("null".equals(Sizeval))
throw new IllegalArgumentException("got it");
query.addFilterQuery("size:" + Sizeval);
}
答案 1 :(得分:1)
request.getParameter("Attr");
返回null,但您将值转换为String
。
当您检查if (Sizeval != null)
Sizeval
时,值为" null"而不是null
对象。
request.getParameter
已经返回String
或null
,所以只需删除广告。
答案 2 :(得分:-1)
不是100%但是:
如果' request.getParameter(" Attr")'返回null,然后将其转换为String,这不会变成String' null'?
之前遇到过这个问题。