私はgrailsの初心者であるために問題に直面しています。ストーリーを読むためのWebサイトを作成しています。私の目標は、ストーリーのコンテンツをいくつかのページに保存してリストを取得し、簡単にページ付けすることです..だから私は次のことをしました。
ドメインで、ストーリーと呼ばれる2つのドメインを作成し、これを持っています:
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])
}
}
私はそれが乱雑に見えることを知っていますが、それはプロトタイプです..とにかく..問題は、条件がtrue ..しかし、実際には、ページを1つずつ保存する必要があると思っていたときに、最後のpage_idxのみで最後のインスタンスが表示されるので、すべてのストーリーのページのリストを取得できます..
なぜこれが起こるのか、私がやったことよりも簡単な方法があります..
私はここで感謝されている助けを待っています