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
我有一份来自 _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