Search code examples
grailsgrails-domain-classgrails-controller

Grails mapping questionnaire data to a bean


This is my first development using Grails. I have a requirement to create a questionnaire. This is my GSP page in which the questions are listed, possible answers for each question is listed and depending upon the type of answer a checkbox or radio button is displayed.It works fine till here

<div class="body">
        <h1><g:message code="default.edit.label" args="[entityName]" /></h1>
        <g:if test="${message}">
        <div class="message">${message}</div>
        </g:if>
            <g:form  action="createDonation" >
            <div class="dialog">
                <table>
                    <tbody>
                     <g:each in="${questionList}" status="i" var="questionInstance">
                     <tr>
                      <td>${fieldValue(bean: questionInstance, field: "text")}</td>
                      </tr>
                      <tr>
                        <g:each in="${questionInstance?.answers?}" status="j" var="a">
                             <td >
                             <g:if test="${fieldValue(bean: a, field: 'ansType.name') == 'Multiple'}"><g:checkBox name="myGroup" value="${false}" /></g:if>
                             <g:if test="${fieldValue(bean: a, field: 'ansType.name') == 'Single'}"><g:radio name="myGroup" value="1"/></g:if>
                             </td>
                            <td >${fieldValue(bean: a, field: "text")}</td>
                        </g:each>
                      </tr>
                    </g:each>


                    </tbody>
                </table>
            </div>
             <div class="buttons">
                  <span class="button"><g:submitButton name="return" class="save" value="${message(code: 'default.button.backtodonorlogin.label', default: 'Back')}" /></span>
                <span class="button"><g:submitButton name="submit" class="save" value="${message(code: 'default.button.saveandcontinue.label', default: 'Create')}" /></span>
            </div>
        </g:form>

    </div>
</body>

Now i want to save the response of the user i.e what is the answer selected by each user for each question. For Multiple choice multiple answers can be selected. I am having a hard time to figure out how to create a model for that. Help is requested.

Thanks


Solution

  • how about this: you create a QuestionResponse entity with the following properties: question (linking to the question being answered) response (answer given by user) responder (responding user)

    You can find out about the current user by using spring security for instance.

    You can determine the question being responded from the hidden ID in your form.