【问题标题】:save Elements in Map/Array/Collection ...... Grails将元素保存在 Map/Array/Collection ...... Grails
【发布时间】:2011-09-21 22:31:07
【问题描述】:

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

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

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

idnumber

answersbooleans

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

谢谢你:-)

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

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

现在我把这张地图交给 gsp。我怎么知道从中获取数据?感谢帮助! :-)

【问题讨论】:

    标签: arrays grails collections groovy map


    【解决方案1】:

    Map 将是最好的方法,但它实际上与 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);
    

    【讨论】:

    • 我不需要域对象,但非常感谢您的帮助!我使用你的第一个 sn-p,它真的帮助了我。我还有一个问题:我现在不知道如何在 gsp 上表示它,也许你有想法?请看我的原始帖子,我更新了它:-)
    • 你应该可以使用
    【解决方案2】:

    Map 似乎是显而易见的结构。映射的键应该是 id,映射的值应该是 List<Boolean> 或(可能最好)封装这 8 个布尔值的类。

    【讨论】:

    • 感谢您的回答,我按照您说的做了!我还有一个问题:我现在不知道如何在 gsp 上表示它,也许你有想法?请看一下我的原始帖子,我更新了它:-
    猜你喜欢
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多