在地图/数组/集合中保存元素...... Grails

时间:2011-06-24 10:38:51

标签: arrays grails collections groovy map

我是grails 1.3.7的新手,我遇到了问题。

我想在一个list/array/map/中存储不同的元素/参数... 要存储的数据如下所示:

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

idnumber

answersbooleans

所以我得到了很多ids(好吧,也许是20个)和每个8个答案 - 布尔。 如何将它们存储得最好,以便我可以再次轻松访问它们?

谢谢: - )

[编辑]非常感谢这些答案,我现在就试试吧! : - )

我现在有一个包含id(int)的地图和一个代表我的答案的对象(它是一个包含booleans answera,answerb等的pojo ...)

现在我将此地图提供给gsp。我怎么知道从中获取数据?感谢帮助! : - )

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

Map似乎是一个明显的结构。地图的键应该是ids,Map的值应该是List<Boolean>或(可能最好)一个封装这8个布尔值的类。