Как привязать данные параметров в объект домена, который имеет свойство / set / set?

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

Вопрос

Я озадачен поведением, с которым я сталкиваюсь с привязкой данных Grails.Я начну с кода контроллера

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

Также начисление вопросов, как выглядит

class QuestionSurvey {

    String questionText
    QuestionTypeSurvey questionType

    static hasMany = [options: QuestionOptionSurvey]

    static mapping = {  
        questionType enumType: 'ordinal'
    }

    static constraints = {}
}
.

также, questionoptionsurvey домен выглядит как

class QuestionOptionSurvey {

    String optionText

    static belongsTo = [question: QuestionSurvey]

    static constraints = { }
}
.

Связывание, которое я думаю, работает для всех свойств, но не поле «Опции» в вопросах.Ошибка, которую я получаю, это

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?
.

Params.Options - это список строк, например [«Опция1», «Опция2», «Опция2»].

Это было полезно?

Решение

Для того, чтобы привязывать свойство options / Collection правильно, ваши параметры должны быть опубликованы с именами элементов, такими как: options.optionText.В противном случае следует ожидать, что вы публикуете идентификаторы и попробуйте найти QuestionOptionSurvey, соответствующие этим идентификаторам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top