Grails AddTo in for循环

时间:2010-08-14 14:37:18

标签: java list grails hibernate-onetomany

我面临一个问题,因为我是graies的新手 我正在做一个阅读故事的网站,我现在的目标是将故事的内容保存到几个页面以获得一个列表,然后轻松地分页。所以我做了以下。

在域名中我创建了两个名为story的域名,并拥有:

class Story {

String title

List pages

static hasMany=[users:User,pages:Page]
static belongsTo = [User]

static mapping={
    users lazy:false
    pages lazy:false

}

}

当然有域调用页面有这个:

class Page {
String Content
Story story
static belongsTo = Story
static constraints = {
    content(blank:false,size:3..300000)
}

}

并且控制器保存方法如下:

 def save = {
    def storyInstance = new Story(params)
    def pages = new Page(params)
    String content = pages.content
    String[] contentArr = content.split("\r\n")

    int i=0

    StringBuilder page = new StringBuilder()
    for(StringBuilder line:contentArr){
        i++
        page.append(line+"\r\n")

        if(i%10==0){

               pages.content = page
               storyInstance.addToPages(pages)
               page =new StringBuilder()
        }
    }



    if (storyInstance.save(flush:true)) {
        flash.message = "${message(code: 'default.created.message', args: [message(code: 'story.label', default: 'Story'), storyInstance.id])}"
        redirect(action: "viewstory", id: storyInstance.id)
    }else {
        render(view: "create", model: [storyInstance: storyInstance])
    }
}

我知道它看起来很乱,但它是原型..任何方式..问题是我正在等待“storyInstance.addToPages(pages)”行每次都向页面集添加一个页面实例条件是真的..但实际发生的是,它只给了我最后一个页面的最后一个page_idx,而我认为它应该逐个保存页面,所以我可以得到每个故事的页面列表..

为什么会发生这种情况,并且有一种比我做的更简单的方法..

我正在等待任何有用的帮助

0 个答案:

没有答案