我正在做一個閱讀故事的網站。我的目標是將故事內容保存到多個頁面中以獲取列表,然後輕鬆分頁;我做了以下內容:Grails addTo in for循環
在域我創建了兩個域,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)
}
}
控制器save
操作是:
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
。我認爲它會一頁一頁地保存頁面,這樣我就可以得到每個故事的頁面列表。
爲什麼會發生這種情況,是否有比我更簡單的方法呢?
任何幫助表示讚賞。
看看http://stackoverflow.com/questions/3483664/grails-addto-in-for-loop/3484207#3484207 – Oleksandr 2010-08-14 16:47:31