我有一个简单的表单,我试图从中检索值。除了我想从集合中删除null或空值。我得到的一个示例输出是:
joey:admin:null::155:null
您可以看到值为null,其中一个值为空(具有两个冒号的值)。我做错了什么我想如果我检查了尺寸和空检查它不会通过?我有什么想法我做错了吗?
String generateValues() {
return request.requestParameterMap
.findAll { key, value -> !(key in ["honeypot", "confirm"]) }
.collect { k, v -> if(v != null && v.size() > 0) v[0]
}.join(",")
}
答案 0 :(得分:3)
您未检查.collect
的结果。此闭包也将为空键返回空值(无else
部分)。
试试这个:
return request.requestParameterMap
.findAll { key, value -> !(key in ["honeypot", "confirm"]) }
.collect { k, v -> if(v != null && v.size() > 0) v[0] }
.findAll { x -> x != null && x.length() > 0 }
}.join(",")
或使用.findResults
代替.collect
:
return request.requestParameterMap
.findAll { key, value -> !(key in ["honeypot", "confirm"]) }
.findResults { k, v -> v?.size() > 0 && v[0]?.length() > 0 ? v[0] : null }
}.join(",")