我有一个条件声明如下

if (Sizeval != null) {
            query.addFilterQuery("size:" + Sizeval);
        }


在调试中,我可以看到Sizeval = null的值

我从下面的请求对象获取此值

Sizeval = (String) request.getParameter("Attr");


但是,即使Sizeval为null,它也会执行query.addFilterQuery语句。

关于纠正此问题的任何建议

最佳答案

重述您的问题。给定

HttpServletRequest requst = ...
String Sizeval = (String) request.getParameter("Attr");
if (Sizeval != null) {
    query.addFilterQuery("size:" + Sizeval);
}


您会看到if的主体已执行(暗示Sizeval不为null),但Sizeval仍为null(在调试器或构造的过滤器中观察到)。

说明:Sizeval不为null,但其文字值为"null"。这将添加一个"size:null"过滤器查询。同样,当在日志或调试器中查看变量时,它似乎是null

验证做

if (Sizeval != null) {
    if ("null".equals(Sizeval))
        throw new IllegalArgumentException("got it");
    query.addFilterQuery("size:" + Sizeval);
}

10-06 10:45