【问题标题】:how to bind params data to domain object that has a list/set property?如何将参数数据绑定到具有列表/设置属性的域对象?
【发布时间】:2014-07-28 21:48:40
【问题描述】:

我对 grails 数据绑定所面临的行为感到困惑。我将从控制器代码开始

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

QuestionSurvey 域也看起来像

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 = { }
}

我认为绑定适用于所有属性,但不适用于 QuestionSurvey 域中的“选项”字段。我得到的错误是

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 是一个字符串列表,例如 ['option1', 'option2', 'option2']。

【问题讨论】:

    标签: java grails data-binding groovy grails-2.0


    【解决方案1】:

    为了正确绑定options 属性/集合,您的参数应该使用元素名称发布,例如:options.optionText。否则它会期望您发布 id 并尝试找到与这些 id 匹配的 QuestionOptionSurvey

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多