Grails-如何从不同的控制器保存一个类实例?

Grails-如何从不同的控制器保存一个类实例?,grails,controller,save,grails-domain-class,Grails,Controller,Save,Grails Domain Class,我有一个来自\u form.gsp的输入列表。i、 e.英语、科学、数学、音乐以及其他学生信息。单击submit按钮时,会转到studentController保存方法 如果找不到音乐数据库,我想将其添加到课程数据库中 这就是我现在拥有的 def save(Student studentInstance) { .... def courseInputList = params.course.tokenize(', ') for (item in courseInputLi

我有一个来自
\u form.gsp
的输入列表。i、 e.
英语、科学、数学、音乐
以及其他
学生
信息。单击
submit
按钮时,会转到
studentController
保存
方法

如果找不到
音乐
数据库,我想将其添加到
课程
数据库中

这就是我现在拥有的

def save(Student studentInstance) {
....
    def courseInputList = params.course.tokenize(', ')
        for (item in courseInputList){  
            def courseID = Course.findByCourseLike(item)
            StudnetCourse.link(studentInstance,courseID)
        }
....
}
我有一个自动完成,所以用户将开始键入,并弹出一个列表供选择

我在
def courseID=Course.findByCourseLike(item)
下面添加了
if(courseID==null){}
语句,但保存条件没有成功。我尝试了
重定向``forward``新课程(项目)。保存flush:true
等。请帮助


提前感谢。

您可以使用域的动态方法:findOrCreateBy*。在您的情况下,它将类似于:

def courseInputList = params.course.tokenize(', ')

for (item in courseInputList){  
        def courseID = Course.findOrCreateByCourseLike(item)
        StudnetCourse.link(studentInstance,courseID)
}

您可以在此处找到更多信息:

您是否尝试使用
failOnError:true
查看是否有错误?很好,它成功了。我需要保存课程,所以我使用了
findOrSaveBy
。非常感谢。