关于预期的内容,我可能没有正确回答问题。我的假设是,您将params
在请求中提供其中一个(名词或 ID 或两者)。基于该假设,您可以按如下方式实施标准。注意:-我使用toInteger()
了你提到的数据类型 as int
,通常ids
与Long
GORM 和 Hibernate 持久层结合使用。
def criterios = CatalogoJson.createCriteria().listDistinct {
if(params.id) {
idEq(params.id.toInteger())
}
if (params.nombre) {
eq('nombre', params.nombre)
}
}
render criterios as JSON
更新
好的,让我再试一次。再次,如果我错误地关注了你,请告诉我。您期望映射 url 的方式不是 RESTful。相反,有一种最佳方法可以实现您对 REST 服务的期望:-
令人愉快的方式或我喜欢这种方式
url 映射应该看起来像
"/catalog/$id?"(resource: 'catalog')
//Controller Action:-
def show(){
def criterios = CatalogoJson.createCriteria().list {
if(params.id) { //check 1
idEq(params.id.toInteger())
} else if(params.name) { //check 2
eq('name', params.name)
} else if(params.year){ //check 3
eq('year', params.year)
} else if(params.others){ //check 4
eq('others', params.others)
} //so on an so forth //Can also use Switch case if you want
}
render criterios as JSON
}
用例:-
http://mydomain.com/catalog/134 --> 应该设置id
为 134 并且检查 1 将被评估
http://mydomain.com/catalog?name=Pep --> 应该设置name
为Pep
和检查 2 将被评估
http://mydomain.com/catalog?year=1987 --> 应该将year
参数设置为1987
并且检查 3 将被评估
推理-
使用命名查询参数根据您在 REST 服务和域中的需要逐项列出您的参数。如果您想使用未命名的参数,则 url 映射将如下所示:
"/catalog/$id/$name?/$year?/$others?"(resource: 'catalog')
这种方法的问题是您的网址应该看起来像
http://mydomain.com/catalog/134
http://mydomain.com/catalog/134/Pep
http://mydomain.com/catalog/134/Pep/ 1987年
您的可选参数不再是可选的。查看URL 映射中的可选变量