2017-10-19 5 views
0

Ich habe ein Problem mit meiner Webanwendung. Ich benutze Spring MVC als Controller. In meinem JSP habe ich ein Formular mehrere Eingänge enthält, wobei jeder von ihnen wird den Inhalt einer Arraylist von String-Objekte angezeigt werden, die ein Modell Attribut ist, wie folgt aus:Ausdruckssprache zeigt leere ArrayList-Elemente nicht korrekt an (Spring MVC controller)

<form> 
    <c:forEach var="i" begin="0" end="${myArrayListlength}"> 
     <form:input id="line${i}" type="text" value="${myArrayList[i]}" /> 
    </c:forEach> 
</form> 

Das Problem ist, dass einige Elemente der ArrayList (theoretisch sogar alle) könnte leer sein. Die Eingaben, die nicht leere Strings anzeigen, funktionieren problemlos, die Eingabe, die einer leeren Zeichenfolge entspricht, zeigt eine Verkettung aller ArrayList-Elemente an. Nehmen wir an, die ArrayList enthält 4 Elemente, "Joe", "Mark", "", "Bob". Das Formular wird die folgende Anzeige:

Joe 
Mark 
Joe,Mark,,Bob 
Bob 

ich etwas tryied habe die richtig leer Eingänge zu bekommen, wo sie eigentlich sind, aber vergeblich. Ich habe versucht, einen ternären Ausdruck in den Attributen zu verwenden, wie

value="${not empty myArrayList[i] ? myArrayList[i] : ''}" 

aber nicht funktioniert.

Vielen Dank im Voraus an jeden, der mir helfen wird, etwas Licht auf dieses zu werfen.

+1

geschieht dies, wenn Sie die Schleife in: ' '? –

+0

Die Formulareingaben verschwanden von der Seite :( –

+1

Nun, es gibt einen Unterschied zwischen der Verwendung von Spring-Form-Tags und nur den gewöhnlichen. Vielleicht brauchen Sie keine Spring-Tags. Versuchen Sie, den 'form:' -Teil im Input-Tag zu entfernen. –

Antwort

0

Wie Jack Flamp vorgeschlagen hat, hat der Wechsel von der Spring-Form zur normalen Form die Magie bewirkt. Jetzt läuft alles reibungslos, ohne dass ternäre Operatoren oder andere seltsame Fixes benötigt werden.

Verwandte Themen