como vincular dados de parâmetros ao objeto de domínio que possui uma propriedade de lista/conjunto?

StackOverflow https://stackoverflow.com//questions/25004913

Pergunta

Estou intrigado com o comportamento que estou enfrentando com a vinculação de dados do Grails.Vou começar com o código do controlador

def saveQuestion(){
   QuestionSurvey question = new QuestionSurvey();
   bindData(question, params);
   question.save(); 
}

Além disso, o domínio QuestionSurvey se parece com

class QuestionSurvey {

    String questionText
    QuestionTypeSurvey questionType

    static hasMany = [options: QuestionOptionSurvey]

    static mapping = {  
        questionType enumType: 'ordinal'
    }

    static constraints = {}
}

Além disso, o domínio QuestionOptionSurvey se parece com

class QuestionOptionSurvey {

    String optionText

    static belongsTo = [question: QuestionSurvey]

    static constraints = { }
}

Acho que a ligação está funcionando para todas as propriedades, mas não para o campo "opções" no domínio QuestionSurvey.O erro que estou recebendo é

TypeMismatchException: Provided id of the wrong type for class QuestionOptionSurvey.  

Expected class java.lang.Long got java.lang.String. So my question is how to get around   

this problem of binding params to a domain that has a field of type set of another domain 

class?

O params.options é uma lista de strings, por exemplo ['option1', 'option2', 'option2'].

Foi útil?

Solução

Para vincular o options propriedade/coleção corretamente, seus parâmetros devem ser postados com nomes de elementos como: options.optionText.Caso contrário, esperaremos que você poste IDs e tente localizar o QuestionOptionSurvey combinando esses IDs.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top