2011-06-24 6 views
1

私はgrails 1.3.7に新規です。問題があります。マップ/配列/コレクションに要素を保存...... Grails

は、私はこのようなルックスを保存するものは何でも... データ1 list/array/map/に異なる要素/偶然にを格納したい:

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

idnumber

answersでいるbooleans

だから、私は多くのids(よく、多分20)と各o ne 8 answers-booleans。 私はそれらを一番いい場所に保管して、とても簡単にアクセスできます。

は、[EDIT]おかげでたくさんのものを答えて:-)

ありがとう、私は今それを試してみます! :-)

私は今、私はこのマップを与える今すぐIDを含むマップ(int型)と私の答えを表すオブジェクト(などブールのanswera、answerbを、含まれているそのPOJO ...)

を持っていますgsp。データを取得する方法を知るにはどうすればよいですか?手伝ってくれてありがとう! :-)

答えて

1

Mapは明らかな構造のようです。マップのキーはIDでなければならず、マップの値はList<Boolean>か、これらの8ブール値をカプセル化するクラス(おそらく好ましくは)でなければなりません。

+0

おかげで、私はそれをやりました!私はまだ問題がある:gsp上でそれをどのように表現するのか分からない。私のオリジナルの投稿を見て、私はそれを更新しました: - – nano7

2

マップは最良の方法ですが、実際にはグレーズとは関係ありません。これらをドメインクラス/データベースに保持する必要がありますか?マップがどのように見えるか

...

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

あなたは

関連する問題