`
rikugun
  • 浏览: 352726 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

grails 中如何将页面的list值传递到controller中

阅读更多
现在有一个模型比如作者和书
一个作者有多本书
class Author{
static hasMany = [books:Book]
}

class Book{
String title
}


我需要在同一个View 中添加多本书,根据Grails 1.1 RC2的用法
<g:textField name="books[0].title" value="the Stand" />
<g:textField name="books[1].title" value="the Shining" />
<g:textField name="books[2].title" value="Red Madder" />


但是在controller 中
println params.books //出错
println params."books[0]" //可以输出 the Stand


如何能够通过 params.books 获得所有的books呢?
分享到:
评论
5 楼 tongyi121 2009-03-07  
是我看错了,我试通的那一段跟你现在的一样。
4 楼 rikugun 2009-03-07  
tongyi121 写道

不加Command Objects是取不到的,你可以定义一个Command Objects,例如Groovy代码 class&nbsp;AuthorCommand&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;books&nbsp;=&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;constraints&nbsp;=&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}&nbsp;&nbsp;class AuthorCommand {
    List books = []
    static constraints = {
        ...
    }
}这个类不用另创建一个新的文件,需要将其定义到contorller的最后面然后将要提交的controller的那个闭包写成Groovy代码 def&nbsp;xxx&nbsp;=&nbsp;{AuthorCommand&nbsp;cmd-&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println&nbsp;cmd.books&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.....&nbsp;&nbsp;}&nbsp;&nbsp;def xxx = {AuthorCommand cmd-&gt;
    println cmd.books
    .....
}


谢谢,不过我试过了,还是不行,报错
引用
Caused by: org.springframework.beans.InvalidPropertyException: Invalid property 'books[1]' of bean class [ApplyCommand]: Index of out of bounds in property path 'books[1]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
    


我现在是通过,修改view
<g:textField name="titles[0]" value="the Stand" />
<g:textField name="titles[1]" value="the Shining" />
<g:textField name="titles[2]" value="Red Madder" />

然后在command object中
class BookCommand{
        List titles = []
        static constraints = {}
    }

这样来获取
3 楼 tongyi121 2009-03-07  
不加Command Objects是取不到的,你可以定义一个Command Objects,例如
class AuthorCommand {
    List books = []
    static constraints = {
        ...
    }
}

这个类不用另创建一个新的文件,需要将其定义到contorller的最后面
然后将要提交的controller的那个闭包写成
def xxx = {AuthorCommand cmd->
    println cmd.books
    .....
}
2 楼 rikugun 2009-03-05  
tongyi121 写道

你在接收的control里面写上println params看下就不就知道有没有了

你好,
params里只有
books[0]:[title:"the Stand"]
books[1]:[title:"the Shining"]
books[2]:[title:"Red Madder"]
books[0].title:"the Stand"
books[1].title:"the Shining"
books[2].title:"Red Madder"
1 楼 tongyi121 2009-03-04  
你在接收的control里面写上println params看下就不就知道有没有了

相关推荐

    grails-web-url-mappings-2.5.4.zip

    最后,我们注意到压缩包中的子文件夹"Rapture-master"可能是一个开源项目,它可能使用了Grails 2.5.4的URL映射特性来构建其Web应用。通过查看该项目的源代码,我们可以进一步了解如何在实际项目中应用和扩展Grails的...

    《Grails权威指南》中的bookmarks工程代码

    通过阅读和运行"bookmarks"工程的源代码,读者可以学习到如何在Grails中创建模型、定义控制器、编写服务、设计视图,以及如何利用Grails的自动映射和脚本特性提高开发效率。此外,还能了解到如何利用Grails的命令行...

    一步一步学grails(14)

    `controller="planning"` 和 `action="search_advanced"` 参数指定了目标控制器和动作,`params="[flag:1]"` 则传递了一个参数 `flag`,值为 1。 2. **定义控制器动作** 在 `grails-app/controllers/...

    grails-code-coverage:Grails代码覆盖插件的Git Repo

    对于持续集成服务器),请指定@ -xml @标志,如下所示: grails test-app -xml该插件对HTML报表进行了一些后期处理,以使Controller操作名称以人类可读的形式显示(例如@ Controller.list @而不是@Controller。...

    实战Groovyforeach剖析

    将Groovy引入到开发工具箱中时,重要的是理解其适用的场景。Groovy非常适合快速开发和编写脚本,同时也能够与现有的Java代码进行无缝集成。然而,需要注意的是,在性能要求极高的场景下,Groovy代码可能不会像纯Java...

    groovy的简单例子

    10. **Grails**:基于Groovy的Web开发框架,简化了构建Web应用的过程,特别是通过其内置的GORM(Groovy Object Relational Mapping)和Grails Controller概念。 以上只是Groovy语言中的一部分核心特性。学习和掌握...

Global site tag (gtag.js) - Google Analytics