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

Grails - How do I save one class instance from a different controller?

我有一份来自 _form.gsp 的输入列表。即 English, Science, Math, Music 以及其他 student 信息。单击 submit 按钮时,将转到 studentController save 方法。

如果找不到,我想将 Music 添加到 course 数据库中。

这就是我现在拥有的。

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) { } 语句,但我没有成功保存条件。我尝试了 redirect``forward``new Course(item).save flush:true 等。请帮助。

提前致谢。

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

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

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

您可以在此处找到更多信息:http://grails.github.io/grails-doc/2.3.x/ref/Domain%20Classes/findOrCreateBy.html