Question

J'ai du mal à obtenir ma vue JSP correcte.Ce que j'ai l'intention de faire, c'est d'envoyer une liste contenant des questions et chaque objet de question est un champ de texte et une liste avec des alternatives.

Mon intention est de pouvoir modifier plusieurs questions (à la fois pour pouvoir modifier le texte/nom de la question et modifier les alternatives qui la contiennent).

Mon objet de support envoie maintenant une question de liste.

Voici mon JSP qui échoue avec une propriété invalide de la classe du bean.

        <form:form commandName="question">
        <form:errors path="*">
            <fieldset class="stdframe">
                <legend>Question</legend>
            </fieldset>
        </form:errors>

        <div class="stdframe">
            <c:forEach var="q" items = "${question}" varStatus = "s">           
                <p><b>Question:</b></p>
                <p><form:input size="67" path="${q.text}"/></p>
                <br/>
                ${q.text}
                <ul>
                    <c:forEach var="alternative" items = "${q.alternatives}" varStatus = "t">
                        ${alternative.text}
                        <li><form:input path = "${alternative[$t.index].text}" /></li>
                    </c:forEach>
                </ul>
                <br/>
            </c:forEach>
                <input type="submit" class="submit" value="Save" />
                <input type="button" class="button" onClick="back()" value="Back"/>
        </div>
</form:form>

j'ai essayé les deux ${q.text} et ${q[$s.index].text}.Quand je viens d'imprimer ${q.text} il affiche le texte correct pour l'objet question.Il en va de même pour l'alternative.

Que puis-je faire pour lier correctement le formulaire aux objets ?

De plus, lorsque je stocke un objet contenant une liste d'autres objets, la liste sera-t-elle elle-même stockée dans la base de données ?

Était-ce utile?

La solution

Vous devrez peut-être envelopper votre liste dans un objet simple avec la liste comme champ :

class MyListWrapper { List questions; } // etc.

Si vous l'utilisez comme objet de commande/formulaire, vous devriez pouvoir faire quelque chose comme ceci dans le JSP :

<form:form commandName="wrapper">
// ... 
        <c:forEach var="q" items = "${wrapper.questions}" varStatus = "s">
           <p><b>Question:</b></p>
            <p><form:input size="67" path="questions[${s.index}].text"/></p>
// ... 
               <c:forEach var="alternative" items = "${q.alternatives}" varStatus = "t">
                    ${alternative.text}
                    <li><form:input path = "questions[${s.index}].alternatives[${t.index}].text" /></li>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top