2011-06-24 24 views
1

我是grails 1.3.7的新手,我遇到了問題。在地圖/數組/集合中保存元素...... Grails

我想不同的元素/ paramters存儲在一個list/array/map/任何.. 的數據存儲看起來像這樣:

id : answera, answerb, answerc, answerd, answere, answerf, answerg, answerh

idnumber

answersbooleans

所以我得到了很多ids(好,也許20),併爲每個o ne 8答案 - 布爾值。 如何將它們存儲爲最佳,以便我可以很容易地訪問它們?

謝謝:-)

[編輯]非常感謝這些答案,我現在就試試吧! :-)

我現在已經含有一個ID(int)和代表我的答案對象的映射(其包含布爾answera,answerb等一個POJO ...)

現在我把這個地圖一個gsp。我如何知道從中獲取數據?感謝幫助! :-)

回答

1

A Map似乎是明顯的結構。地圖的鍵應該是ID,Map的值應該是List<Boolean>或者(可能最好)封裝這8個布爾值的類。

+0

謝謝您的回答,我做到了,就像你說的!我仍然有一個問題:我不知道如何在gsp上表示它,也許你有一個想法?請看看我原來的帖子,我更新了它: - – nano7

2

地圖將是最好的方法,但它確實與grails無關。你需要堅持這些到一個域類/數據庫?

地圖將是什麼樣子?

def map = [:] 
map.put(id1, [new Answer(accepted:true), new Answer(accepted:false)]; 
map.put(id2, [new Answer(accepted:false), new Answer(accepted:false)]; 

我不認爲這會給你一個簡單的域類的工作。聽起來你會想要一個Grails域的類來封裝答案。喜歡的東西...

class Question{ 

    static hasMany = [answers:Answer] 
    Integer id 
    Boolean answered 

    def hasBeenAnswered(){ 
     answers.each(){ answer-> 
      if (answer.accepted){ 
       answered = true; 
       return true; 
      } 
     } 
     return false; 
    } 

    def acceptAnwser(Answer answer){ 

     answer.accepted = true; 
     this.answered = true; 

    } 


} 

class Answer{ 

    static belongsTo = [question:Question] 

    Integer id 
    Boolean accepted 
    String text 
} 

然後你的代碼會更容易使用...

def allQuestion = Question.list(); 
def allUnansweredQuestions = Question.findAllByAnswered(false); 
def allAnsweredQuestions = Question.findAllByAnswered(true); 
+0

我不需要域對象,但非常感謝您的幫助!我使用你的第一個片段,它真的幫助了我。我仍然有一個問題:我不知道如何在gsp上表示它,也許你有一個想法?請看看我原來的帖子,我更新了它:-) – nano7

+0

您應該可以使用