1

私はこのコードを持っています.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
4

1 に答える 1

2

何が期待されているかについて、私は質問を正しく受けていなかったかもしれません。私の仮定ではparams、リクエストで利用可能な (nombre または Id またはその両方) のいずれかを持っていると思います。その仮定に基づいて、以下のように基準を実装できます。注:-toInteger()データ型について言及したよう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

UPDATE
OK、もう一度試してみましょう。繰り返しますが、私があなたを間違ってフォローしていた場合は、お知らせください。URL をマップする方法は RESTful ではありません。代わりに、REST サービスで期待するものを実装するための最良の方法が 1 つあります。

楽しい方法または I-like-it-this-way
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を params に設定する必要1987があり、チェック 3 が評価されます

推論-
名前付きクエリ パラメーターを使用して、REST サービスとドメインでのニーズに関してパラメーターを項目化します。名前のないパラメータを使用する場合、URL マッピングは次のようになります。

"/catalog/$id/$name?/$year?/$others?"(resource: 'catalog')

このアプローチの問題は、URL が
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 に答える