Grails:动态形式

时间:2011-07-08 08:09:10

标签: grails

我有从书中删除作者的问题。

我有一对多单向关系中的班级和班级作者:

class Book{

    String isbn
    ...

    List<Author> authors
    static hasMany = [ authors: Author ]
}

class Author {

    String firstname
    String lastname
    ...

}

注意:在作者类中没有 belongsTo

我使用动态表单: enter image description here

请注意按钮添加作者删除作者。我使用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
            }
        }

适用于添加作者以及修改作者,但不适用于删除作者。 如果我使用“删除作者”按钮并单击“提交表单”,则作者不会从“书籍”中删除。 编辑之前有所有作者。

拜托,你能解决这个问题吗? 这是一个很好的解决方案吗?

非常感谢 汤姆

1 个答案:

答案 0 :(得分:2)

除非您在请求中发送要删除的作者的ID,并且明确指示grails将其删除,否则Grails无法知道您要删除哪位作者。截至目前,params中的作者并不意味着删除作者。

因此,您需要在表单中执行某些操作,以便在“删除作者”时存储要在隐藏字段中删除的作者的ID以及表示要删除的内容。然后喜欢 ......

def authorToRemove = Author.get(params.authorId)
def book = Book.get(params.id)
book.removeFromAuthors(authorToRemove)