сохранить элементы в карте / массиве / коллекции ...... Grails - PullRequest
1 голос
/ 24 июня 2011

Я новичок в grails 1.3.7 и у меня возникла проблема.

Я хочу хранить разные элементы / параметры в одном list/array/map/ независимо от того, какие данные должны быть сохранены, выглядит следующим образом:

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

id это number

answers booleans

, поэтому у меня много ids (ну, может быть, 20) и для каждого 8 ответов - логическое значение.Как я могу хранить их лучше, чтобы я мог снова легко получить к ним доступ?

Спасибо: -)

[ПРАВИТЬ] Большое спасибо за эти ответы, я попробую ихсейчас!: -)

Теперь у меня есть карта, содержащая id (int) и объект, представляющий мои ответы (это pojo, который содержит логические значения answera, answerb и т. Д ...)

Теперь яотдай эту карту в gsp.Как я знаю получить данные из этого?Спасибо за помощь!: -)

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Карта была бы лучшим подходом, однако на самом деле она не имеет ничего общего с граалями. Вам нужно сохранить их в доменном классе / базе данных?

Как будет выглядеть карта ...

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 голос
/ 24 июня 2011

A Map кажется очевидной структурой. Ключами карты должны быть идентификаторы, а значения карты должны быть либо List<Boolean>, либо (вероятно, предпочтительно) классом, который инкапсулирует эти 8 логических значений.

...