我有从书中删除作者的问题。
我有一对多单向关系中的班级和班级作者:
class Book{
String isbn
...
List<Author> authors
static hasMany = [ authors: Author ]
}
class Author {
String firstname
String lastname
...
}
注意:在作者类中没有 belongsTo 。
我使用动态表单:
请注意按钮添加作者和删除作者。我使用JavaScript附加html代码来形成或从表单中删除html代码。
之后我将类Book保存在控制器中:
def save = {
def book = new Book()
if (params.id){
book = Book.get(params.id)
}
book.properties = params
if( book.save() ){
redirect(controller:"book", action:"all")
return
}else{
render(view:'form', model:["book": book])
return
}
}
适用于添加作者以及修改作者,但不适用于删除作者。 如果我使用“删除作者”按钮并单击“提交表单”,则作者不会从“书籍”中删除。 编辑之前有所有作者。
拜托,你能解决这个问题吗? 这是一个很好的解决方案吗?
非常感谢 汤姆
答案 0 :(得分:2)
除非您在请求中发送要删除的作者的ID,并且明确指示grails将其删除,否则Grails无法知道您要删除哪位作者。截至目前,params中的作者并不意味着删除作者。
因此,您需要在表单中执行某些操作,以便在“删除作者”时存储要在隐藏字段中删除的作者的ID以及表示要删除的内容。然后喜欢 ......
def authorToRemove = Author.get(params.authorId)
def book = Book.get(params.id)
book.removeFromAuthors(authorToRemove)