Отображение списков на gsps (grails) - PullRequest
0 голосов
/ 24 июня 2011

Я новичок в Grails 1.3.7, и я пытаюсь получить доступ к своей базе данных и показать свои данные на gsp. Теперь у меня возникла следующая проблема: у меня есть список вопросов (list of Questions) и список ответов (list ofAnswers). К каждому вопросу относится один объект Lpicanswer, который содержит различные ответы (answera, answerb)

Итак, когда я создаю эти списки, в конце концов у меня есть один список, содержащий вопросы, и один список, содержащий lpicanswer-объекты. у каждого lpicanswerobject есть lpicid (который является идентификатором вопроса), так что они связаны друг с другом.

Вот код для создания этих списков:

    List listofQuestions = []
    List listofAnswers = []

    def ques
    def question
    def ans
    // we create a questions list containing questions
    // we create a answers list containing answers-objects for a question
    for (int i = 0; i <= cacheService.questionList.size()-1; i++) {
        ques = Lpicquestions.get(cacheService.questionList[i]);
        question = ques.question;
        listofQuestions.add(question);
    }

    for (int i = 0; i <= cacheService.questionList.size(); i++) {
        ans = Lpicanswers.get(cacheService.questionList[i]);
        listofAnswers.add(ans);
    }

     return new ModelAndView("/result/resultdetail", [ qlist : listofQuestions, alist : listofAnswers ]);}

Теперь я хочу показать их на моем GSP. вот что я делаю:

<g:each in="${qlist}">

<b>${it}</b><br/>

${alist.answera}<br/>
${alist.answerb}<br/>
${alist.answerc}<br/>
${alist.answerd}<br/>
${alist.answere}<br/>
${alist.answerf}<br/>
${alist.answerg}<br/>
${alist.answerh}<br/>

</g:each>

Что происходит, это то, что вопросы задаются правильно, но ответы, конечно, нет. Для каждого вопроса показаны все ответыa, все ответыb и т. Д. (Например: [answera-from-question1, answera-from-question2] и т. Д.) Как мне решить эту проблему?

любая помощь будет оценена! : -)

[РЕДАКТИРОВАТЬ] Вот структура lpicquestions и lpicanswers, спасибо за помощь! : -)

package com.lpic

class Lpicquestions {

    int lpicchapter 
    String question

    static constraints = {
        question(nullable:false, blank:false, maxSize:1000)
        lpicchapter(nullable:false, blank:false)
    }

}


package com.lpic

class Lpicanswers {

    Lpicquestions lpicid
    String answera
    String answerb
    String answerc
    String answerd
    String answere
    String answerf
    String answerg
    String answerh

    static constraints = {
    }
}

1 Ответ

1 голос
/ 24 июня 2011

aList не является объектом или картой. Таким образом, вы не можете поставить что-то вроде: $ {} Alist.answera

изменить вид на.

<g:each var="question" in="${qlist}">
    <b>${question}</b><br/>
    <g:each var="answer" in="${aList}">
        <g:if test="${answer.lpicid?.question == question}">
            <b>${answer.answera}</b><br/>
            <b>${answer.answerb}</b><br/>
            <b>${answer.answerc}</b><br/>
            <b>${answer.answerd}</b><br/>
            <b>${answer.answere}</b><br/>
            <b>${answer.answerf}</b><br/>
            <b>${answer.answerg}</b><br/>
            <b>${answer.answerh}</b><br/>
        </g:if>
    </g:each>
</g:each>

если предположить, что cacheService.questionList содержит список идентификаторов для Lpicquestions изменить

for (int i = 0; i <= cacheService.questionList.size(); i++) {
    //ans = Lpicanswers.get(cacheService.questionList[i]);
    ans = Lpicanswers.findWhere(['lpicid' : Lpicquestions.get(cacheService.questionList[i])]);
    listofAnswers.add(ans);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...