2012-01-06 101 views
1

我有兩個Grails領域類Grails的一對多的關係視圖

Class MultipleChoiceQuestion { 
    String question 
    static constraints = { 
     ... 
    } 
    static hasMany = [options:MultipleChoiceOption] 
    } 

class MultipleChoiceOption{ 
    String answerOption 
    boolean correctOption 
    MultipleChoiceQuestion question 
    static constraints = { 
     ... 
    } 
} 

我希望我的用戶能夠創建一個問題,再加入ATLEAST 3個選項,而導航/點擊在不同的屏幕上。

我的第一個問題是我必須生成視圖並開始編輯代碼?

如果上述問題的答案是肯定的,那麼我的第二個問題是,在一個表單提交中保存問題以及多個選項的最佳方法是什麼? 生成的代碼將具有類似於每個選項的內容。

<g:textField name="answerOption" value="${answerOptionInstance?.answerOption}"/> 
<g:checkBox name="correctOption" value="${answerOptionInstance?.correctOption}"/> 

我怎麼能在一個頁面中有多個這樣的元素? 請看線框以瞭解我想要達到的目標,對於創建的線框不好表示歉意。 單擊鏈接在你的瀏覽器中打開圖像 http://cynosuredev.com/wf.png Wireframe

回答

2
+0

這看起來像我需要的截圖,但示例代碼似乎沒有在我的環境中工作,我無法理解它是如何從一個GSP創建一個域類的多個實例 – Sap 2012-01-07 20:48:00

+0

Error 2012- 01-08 03:00:41,733 [「http-bio-8080」-exec-5] ERROR hibernate.AssertionFailure - 發生斷言失敗(這可能表示Hibernate中存在錯誤,但更可能是由於會話的不安全使用) 消息:blog.omarello.Phone條目中的null id(發生異常後不刷新會話) Line |方法 - >> 43 | DoCall in blog.omarello.ContactController $ _closure4 $$ ENLMAh4X - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 886 | java.util.concurrent.ThreadPoolExecutor中的runTask $ Worker | 908 |跑 。 。在'' – Sap 2012-01-07 21:36:41

+0

好吧,我發現它,我改變了模板gsp(_phone/_phones)輸入的名稱需要與屬性名稱匹配。 它定義'phoneList'而不是'phones';許多關係是在名字上完成的。 http://pastebin.com/uqbLBZZd – Kidi 2012-01-10 13:57:42

0

您沒有使用Grails的腳手架,如果你不想。由於這是一個非常特殊的形式,你應該自己構造HTML。我在github上創建了一個測試項目,該項目顯示了針對此問題的良好設計。一探究竟。