为了对我的域进行报告,我需要通过URL传递多个参数,并传递相应的值。
简单示例 - 每个
的单个值 http://localhost/myapp/search?
filtertype=status&filterterm=pending
复杂示例 - 多个值 -
http://localhost/myapp/search?
filtertype=status&filtertype=color&filterterm=pending&filterterm=red
我可以使用params.list("filtertype")
&amp ;;将这些值作为列表获取params.list("filterterm")
但这样他们之间就没有任何关联。
我的问题是如何根据这些值进行条件查询,以便我不必对filterterm
的数组索引进行硬编码,就像我在解决方案如下
def filteredResults(params) {
def filtertypes = params.list("filtertype")
def filterterms = params.list("filterterm")
def list = MyDomain.createCriteria().list(max: params.max?: 10, offset: params.offset?: 0) {
if ("status" in filtertypes) {
eq("status", filterterms[0])
}
if ("color" in filtertypes) {
eq("color", filterterms[1])
}
}
}
请注意,在上面的解决方案中,我很难编码filterterms[0] etc..
这不能很好地扩展。我需要一个可以很好地扩展到多个值的解决方案。
答案 0 :(得分:1)
您是否尝试过这样的eachWithIndex
?:
def filteredResults(params) {
def filtertypes = params.list("filtertype")
def filterterms = params.list("filterterm")
def list = MyDomain.createCriteria().list(max: params.max?: 10, offset: params.offset?: 0) {
filtertypes.eachWithIndex { ft, idx ->
eq("${ft}", filterterms[idx])
}
}
}