我有这段代码。我想在JSON中有一些行,以尝试使用条件来查找它。我想将每种情况都渲染为json。
示例:我希望表中具有Name:“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 

请您参考如下方法:

我可能没有正确地预期到什么问题。我的假设是,您在请求中可以使用params(nombre或Id或两者)。基于此假设,您可以执行以下条件。注意:-我使用toInteger(),因为您提到的数据类型为int,通常ids是与GORM和Hibernate持久层结合使用的Long

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服务中的期望:

令人愉快的方式或我喜欢这种方式
网址映射应如下所示
"/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设置为params作为 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

您的可选参数不再是可选的。看看 Optional Variables in URL mapping


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!