2016-03-02 84 views
0

我有如下为空检查条件语句

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

在调试我可以看到Sizeval的价值一个条件语句= NULL

我从一个请求对象获得这个值,如下

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

但即使Sizeval为null,它执行query.addFilterQuery statment。

任何建议解决这个问题,PLZ

+0

,空,那addFilterQuery不会被调用。显然,它被称为(至少一次)Sizeval!= null – Stultuske

+1

那么你是否说JVM中存在一个错误? –

+0

你能分享更多的代码吗?我们有'request.getParameter'和'null'之间的任何代码块吗? –

回答

3

要改变你的问题。鉴于

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

你看到执行if体(意味着Sizeval不为空),但仍Sizeval似乎为空(在调试器中或在构建的滤光片观察)。

说明:Sizeval不为空,但具有文字值"null"。这将添加一个"size:null"筛选器查询。另外,当在日志或调试器中查看变量时,它似乎是null

要验证做

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

和谁发送的请求似乎有相反的问题... – wero

+0

的request.getParameter(“的Attr”)将返回字符串“空”,而不是空的对象..但在我的JSP作为参数,我传递空对象本身。我改变了我的逻辑。但没明白这种行为.. – AVINASH

+0

你能告诉你的JSP来解释如何通过空对象参数? –

-1

不是100%,但:

如果 '用request.getParameter( “的Attr”)' 返回null,并且将其转换为字符串,是不是这个变成了String'null'?

以前得到过这个问题。

+0

在这种情况下,怎么能检查自己是否得到了实际空或不是? – AVINASH

+0

不要将它转换为字符串,而是让它成为同一个对象。或者在将结果转换为字符串之前对结果进行空检查。 –

+0

我尝试了所有的评论,即使这是行不通的形成我,如果(用request.getParameter(“的Attr”)!= NULL)。 – AVINASH

1

request.getParameter("Attr");返回null,但是您将值转换为String

当您检查if (Sizeval != null)Sizeval具有值“null”而不是null对象。

request.getParameter已经返回Stringnull,所以刚落铸造。

+0

如何检查请求参数的Attr值是否为空或不是在这种情况下PLZ .. – AVINASH

+1

@AVINASH我回答说,'request.getParameter'已经返回'String'或'null',所以刚落铸造。 “ – Guy

+0

”Sizeval的值为“null”而不是空对象。“ - 什么? – Koshinae