1

我有这段代码。我想在 JSON 中有一些行,找到它我正在尝试使用标准。我想将每个案例呈现为 json。示例:我想要我的表中具有名称的行:“pepito”。如果我放了 params.nombre,但我只想要 JSON 中的这一行,我该怎么做?我试图用 findbyNombre(params.nombre) 来做到这一点,但如果我在他的条件下加上一些 if/else,它就找不到。拜托,有人能帮帮我吗???谢谢!

case "GET":
    def criterios=CatalogoJson.createCriteria().list() {
        if (params.nombre) {
            eq('nombre',  params.nombre)
             //  render CatalogoJson.findByNombre(params.nombre)as JSON
        }
        if(params.id) {
            eq('id',  CatalogoJson.findById(params.id))
        }
    }
    render criterios as JSON

    break
4

1 回答 1

2

关于预期的内容,我可能没有正确回答问题。我的假设是,您将params在请求中提供其中一个(名词或 ID 或两者)。基于该假设,您可以按如下方式实施标准。注意:-我使用toInteger()了你提到的数据类型 as int,通常idsLongGORM 和 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 --> 应该设置namePep和检查 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 映射中的可选变量

于 2013-05-23T14:10:08.637 回答