无法检查grails中的空数据
Unable to check empty data in grails
我有这样的数据,
def data = [[name : '', users : []]]
我尝试通过各种方式检查数据是否为空,但它不再起作用了。
例如,
if(data.name == null){
println 'empty'
}else{
println 'not empty'
}
或者
if(data.name == ''){
println 'empty'
}else{
println 'not empty'
}
总是打印 'not empty'。
如何检查是否为空?
data
是一个列表,data.name
意味着 data*.name
(Spread Operator)。如此清楚地检查 null
或 ''
不会对列表起作用。
所以您的支票应该是 data.name==[null]
或类似的东西。例如
groovy:000> data = [[name : '', users : []]]
===> [[name:, users:[]]]
groovy:000> data.name
===> []
groovy:000> data.name==['']
===> true
要利用 Groovy Truth(其中空字符串和 null 都是 "falsey"),您可以检查是否所有名称都设置为:
if (data.name.every()) print "got all names"
如果你只是在那里得到列表,但不需要它,关于 Groovy Truth 的相同规则适用并且以下检查就足够了:
if (data.first().name) print "got name"
如果你检查 data.name.class
它会给你 class java.util.ArrayList
这意味着您应该使用 data[0].name
访问 name
键。
所以如果你这样做:
if(data[0].name == ''){
println 'empty'
}else{
println 'not empty'
}
它将打印 empty
正如他们所说 data.name 是一个 List。所以没有意义,也不可能将列表与空字符串或 null 进行比较。因为 data.name
的可能值是 空列表 或 字符串列表 。
所以基本上要实现您需要的功能,您可能需要遍历从 data.name
返回的每个项目,如下所示:
def data = [[name : '', users : []]]
data*.name.every(){
if(it == '' || it == null)
println "Name is empty."
else
println "Name is not empty."
}
我有这样的数据,
def data = [[name : '', users : []]]
我尝试通过各种方式检查数据是否为空,但它不再起作用了。 例如,
if(data.name == null){
println 'empty'
}else{
println 'not empty'
}
或者
if(data.name == ''){
println 'empty'
}else{
println 'not empty'
}
总是打印 'not empty'。 如何检查是否为空?
data
是一个列表,data.name
意味着 data*.name
(Spread Operator)。如此清楚地检查 null
或 ''
不会对列表起作用。
所以您的支票应该是 data.name==[null]
或类似的东西。例如
groovy:000> data = [[name : '', users : []]]
===> [[name:, users:[]]]
groovy:000> data.name
===> []
groovy:000> data.name==['']
===> true
要利用 Groovy Truth(其中空字符串和 null 都是 "falsey"),您可以检查是否所有名称都设置为:
if (data.name.every()) print "got all names"
如果你只是在那里得到列表,但不需要它,关于 Groovy Truth 的相同规则适用并且以下检查就足够了:
if (data.first().name) print "got name"
如果你检查 data.name.class
它会给你 class java.util.ArrayList
这意味着您应该使用 data[0].name
访问 name
键。
所以如果你这样做:
if(data[0].name == ''){
println 'empty'
}else{
println 'not empty'
}
它将打印 empty
正如他们所说 data.name 是一个 List。所以没有意义,也不可能将列表与空字符串或 null 进行比较。因为 data.name
的可能值是 空列表 或 字符串列表 。
所以基本上要实现您需要的功能,您可能需要遍历从 data.name
返回的每个项目,如下所示:
def data = [[name : '', users : []]]
data*.name.every(){
if(it == '' || it == null)
println "Name is empty."
else
println "Name is not empty."
}