grails - Grails:动态形式

标签 grails

我对有疑问,请从Book 中删除作者。

我在一对多单向关系中有Book类和Author类:

class Book{

    String isbn
    ...

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

class Author {

    String firstname
    String lastname
    ...

}

注意:在“作者”类中,没有归属于

我使用动态形式:

请注意按钮添加作者删除作者。我使用JavaScript附加html代码来形成表单或从表单中删除html代码。

之后,我将类Book保存在 Controller 中:
 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
            }
        }

对于添加作者和编辑作者来说,效果很好,但是对于删除作者来说,效果不佳。
如果我使用“删除作者”按钮并单击“提交表单”,则作者不会从Book 中删除。
编辑之前有所有作者。

请,您能帮我解决这个问题吗?
这是解决这个问题的好方法吗?

非常感谢
汤姆

最佳答案

Grails无法知道您要删除的作者,除非您在请求中发送了要删除的作者ID以及要删除的Grails的明确指令。截至目前,没有任何params作者并不意味着删除author。

因此,您将需要在表单中执行某些操作,以便在“删除作者”时将要删除的作者ID存储在隐藏字段中,并指明要删除的作者。然后像...

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

关于grails - Grails:动态形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6621690/

相关文章:

tomcat - 在 Grails 中动态配置文件路径

grails - Grails和CXF插件WSDL的第一个方法示例?

grails - 将来自现有JAR的多个过滤器包含到Grails项目中

Grails GSP 标签用于提交带有链接的表单?

java - 在 grails 框架之外使用 grails 插件?

grails - 更改Grails中的 Assets 管道目录名称?还是让grails使用现有结构?

java - 从 Java 7 升级到 Java 8 时,Grails 2.4.2 应用程序的 JVM 崩溃

grails - 覆盖 Groovy 的 java.util.Date toString 方法

grails - 'groovy' 和 'grails-web' 插件 gradle 之间的冲突

hibernate - Grails 2.5.1( hibernate 3)条件多个联接到同一表