我有一个简单的方法,查看来自表单的请求参数,并在字符串中显示值。这个方法工作正常,但是当表单中出现空值时,它显示如下:
beef:mozzarella::milk
如果值为空,您可以看到有一个额外的“:”如何删除它?出于某种原因检查是否v.size> 0不起作用。有什么想法吗?
final String[] products = ["meat", "cheese", "nuts", "dairy"]
String generateProducts() {
return request.requestParameterMap.findAll { k, v -> products.contains(k) }
.collect { k, v -> v.size() > 0 ? v[0] : ""
}.join(":")
}
答案 0 :(得分:3)
您可以使用subMap
:
request.requestParameterMap
.subMap(products)
.findResults { k, v -> v ?: null }
.join(':')
答案 1 :(得分:2)
处理此问题的另一种方法是:
products.collect { request.requestParameterMap[it] }.findAll().join(':')
感谢Tim Yates在我的手腕上轻拍,让我意识到当我想到肉类,奶酪和乳制品时,我对牛肉,马苏里拉奶和牛奶过于笼统。 ;-)(见Tim的回答,注意我明显的无知)