Domanda

Ho problemi a ottenere la mia visione JSP giusta. Quello che intendo fare è inviare un elenco che contenga domande e ogni oggetto di domanda è un campo di testo e un elenco con alternative.

La mia intenzione è di essere in grado di modificare più domande (sia per poter modificare il testo/nome della domanda e modificare le alternative contenenti).

Il mio oggetto di supporto sta ora inviando una domanda di elenco.

Ecco il mio JSP che non riesce con la proprietà non valida della classe 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>

Ho provato entrambi ${q.text} e ${q[$s.index].text}. Quando ho appena stampato ${q.text} Mostra il testo corretto per l'oggetto Domanda. Lo stesso vale per l'alternativa.

Cosa posso fare per legare correttamente la forma agli oggetti?

Inoltre, quando memorizzo un oggetto che contiene un elenco di altri oggetti, l'elenco verrà archiviato nel database?

È stato utile?

Soluzione

Potrebbe essere necessario avvolgere la tua lista in un oggetto semplice con l'elenco come campo:

class MyListWrapper { List questions; } // etc.

Se lo usi come oggetto comando/modulo, dovresti essere in grado di fare qualcosa del genere in 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top