为了在我的域上进行报告,我需要通过URL传递多个参数,并传递它们的相应值。
简单示例-每个值一个http://localhost/myapp/search? filtertype=status&filterterm=pending
复杂示例-多个值-http://localhost/myapp/search? filtertype=status&filtertype=color&filterterm=pending&filterterm=red
我可以使用params.list("filtertype")
和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..
进行编码,因此无法很好地扩展。我需要一个可以很好地扩展到多个值的解决方案。 最佳答案
您是否尝试过使用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])
}
}
}
关于hibernate - 如何将多个值传递给也与其他参数相对应的参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26680627/