Как привязать данные параметров в объект домена, который имеет свойство / set / set?
-
20-12-2019 - |
Вопрос
Я озадачен поведением, с которым я сталкиваюсь с привязкой данных 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
, соответствующие этим идентификаторам.
Не связан с StackOverflow