Grails AddTo в течение цикла

Я сталкиваюсь с проблемой из-за того, что я новичок в Grails, я делаю веб-сайт для чтения историй, и теперь моя цель - сохранить содержание истории на нескольких страницах, чтобы получить список, а затем легко разбить его на страницы… поэтому я сделал следующее.

в домене я создал два домена, один из которых называется story, и он имеет следующее:

class Story {

String title

List pages

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

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

}

}

и, конечно, домен с именем page имеет это:

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 ответов

Другие вопросы по тегам