Problemy z żądaniem POST / PUT Json RESTful Grails

Cześć Mam spokojny kod Grails. Doskonalę żądanie pobierania i usuwania Json. Mój problem jest następujący: chcę z Jsonem wykonać żądanie Put lub post, ale jeśli użyję programu, aby to zrobić, ma błąd i nie mogę tego zrobić! Oto mój kod: Jedna klasa:

package catalogo.json
class Catalogo {
   String nombre
   String descripcion
   String url
   Set <Parametros>parametros =[]
   static hasMany = [parametros:Parametros]
   int numeroParametros = parametros.size()
}

I inna klasa:

package catalogo.json

class Parametros {
   String tipoParametro
   String json
   static constraints = {
     tipoParametro(nullable:true)
     json(nullable:true)
   }
}

Nie wiem, jak włożyć moją prośbę. Oto błąd, kiedy go podaję.

PRZYKŁAD:
I PUT POST request. ciałoapplication/json (lubtext/json to ten sam błąd) Charset-utf-8

{"descripcion": "bla", "nombre" : "lalala", "numeroParametros":3, "parametros":[{                 
"tipoParametro":"string", "json":"bla"}],"url":"http://www.google.com"}

A tutaj błąd:

Could not create new Catalogo due to errors:
 grails.validation.ValidationErrors: 3 errors
Field error in object 'catalogo.json.Catalogo' on field 'descripcion': rejected value [null]; codes [catalogo.json.Catalogo.descripcion.nullable.error.catalogo.json.Catalogo.descripcion,catalogo.json.Catalogo.descripcion.nullable.error.descripcion,catalogo.json.Catalogo.descripcion.nullable.error.java.lang.String,catalogo.json.Catalogo.descripcion.nullable.error,catalogo.descripcion.nullable.error.catalogo.json.Catalogo.descripcion,catalogo.descripcion.nullable.error.descripcion,catalogo.descripcion.nullable.error.java.lang.String,catalogo.descripcion.nullable.error,catalogo.json.Catalogo.descripcion.nullable.catalogo.json.Catalogo.descripcion,catalogo.json.Catalogo.descripcion.nullable.descripcion,catalogo.json.Catalogo.descripcion.nullable.java.lang.String,catalogo.json.Catalogo.descripcion.nullable,catalogo.descripcion.nullable.catalogo.json.Catalogo.descripcion,catalogo.descripcion.nullable.descripcion,catalogo.descripcion.nullable.java.lang.String,catalogo.descripcion.nullable,nullable.catalogo.json.Catalogo.descripcion,nullable.descripcion,nullable.java.lang.String,nullable]; arguments [descripcion,class catalogo.json.Catalogo]; default message [La propiedad [{0}] de la clase [{1}] no puede ser nulo]
Field error in object 'catalogo.json.Catalogo' on field 'nombre': rejected value [null]; codes [catalogo.json.Catalogo.nombre.nullable.error.catalogo.json.Catalogo.nombre,catalogo.json.Catalogo.nombre.nullable.error.nombre,catalogo.json.Catalogo.nombre.nullable.error.java.lang.String,catalogo.json.Catalogo.nombre.nullable.error,catalogo.nombre.nullable.error.catalogo.json.Catalogo.nombre,catalogo.nombre.nullable.error.nombre,catalogo.nombre.nullable.error.java.lang.String,catalogo.nombre.nullable.error,catalogo.json.Catalogo.nombre.nullable.catalogo.json.Catalogo.nombre,catalogo.json.Catalogo.nombre.nullable.nombre,catalogo.json.Catalogo.nombre.nullable.java.lang.String,catalogo.json.Catalogo.nombre.nullable,catalogo.nombre.nullable.catalogo.json.Catalogo.nombre,catalogo.nombre.nullable.nombre,catalogo.nombre.nullable.java.lang.String,catalogo.nombre.nullable,nullable.catalogo.json.Catalogo.nombre,nullable.nombre,nullable.java.lang.String,nullable]; arguments [nombre,class catalogo.json.Catalogo]; default message [La propiedad [{0}] de la clase [{1}] no puede ser nulo]
Field error in object 'catalogo.json.Catalogo' on field 'url': rejected value [null]; codes [catalogo.json.Catalogo.url.nullable.error.catalogo.json.Catalogo.url,catalogo.json.Catalogo.url.nullable.error.url,catalogo.json.Catalogo.url.nullable.error.java.lang.String,catalogo.json.Catalogo.url.nullable.error,catalogo.url.nullable.error.catalogo.json.Catalogo.url,catalogo.url.nullable.error.url,catalogo.url.nullable.error.java.lang.String,catalogo.url.nullable.error,catalogo.json.Catalogo.url.nullable.catalogo.json.Catalogo.url,catalogo.json.Catalogo.url.nullable.url,catalogo.json.Catalogo.url.nullable.java.lang.String,catalogo.json.Catalogo.url.nullable,catalogo.url.nullable.catalogo.json.Catalogo.url,catalogo.url.nullable.url,catalogo.url.nullable.java.lang.String,catalogo.url.nullable,nullable.catalogo.json.Catalogo.url,nullable.url,nullable.java.lang.String,nullable]; arguments [url,class catalogo.json.Catalogo]; default message [La propiedad [{0}] de la clase [{1}] no puede ser nulo]

EDYTUJ TU MÓJ KONTROLER:

package catalogo.json

import grails.converters.JSON

class CatalogoController {

 def index = {       
 switch(request.method){
   case "POST":
        def catalogo = new Catalogo(params.catalogo)
        if(catalogo.save()){
          response.status = 201 // Created
          render catalogo as JSON
        }
        else{
          response.status = 500 //Internal Server Error
          render "Could not create new Airport due to errors:\n                                                          
                      ${catalogo.errors}"
        }
        break
  case "GET":
  if(params.id){render Catalogo.findById(params.id) as JSON}
  else{render Catalogo.list() as JSON}          
  break
 case "PUT":
 def catalogo = Catalogo.findById(params.catalogo.id)
  catalogo.properties = params.catalogo
  if(catalogo.save()){
    response.status = 200 // OK
    render catalogo as JSON
  }
  else{
    response.status = 500 //Internal Server Error
    render "Could not create new Catalogo due to errors:\n ${catalogo.errors}"
  }
  break     
  case "DELETE":
  if(params.id){
    def catalogo = Catalogo.findById(params.id)
    if(catalogo){
      catalogo.delete()
      render "Successfully Deleted."
    }
    else{
      response.status = 404 //Not Found
      render "${params.id} not found."
    }
  }
  else{
    response.status = 400 //Bad Request
    render """DELETE request must include the ID code
              Example: /rest/catalogo/id
    """
   }
    break
  }
}
  def list = {
  if(!params.max) params.max = 10
  def list = Catalogo.list(params)
  withFormat{
    html{
      return [catalogoList:list]
    }
    json{
      render list as JSON
    }
  }
}
}

Dzięki

questionAnswers(1)

yourAnswerToTheQuestion