2016-04-27 18 views
0

Ich entwickle eine App mit Thymeleaf und Spring 4. Ich muss einen Wert seit einer Auswahl zurückgeben.Rückgabewerte von Thymeleaf view

<form class="form-horizontal" th:action="@{/processInfoBook}" th:object="${relationshipDTO}" method="post" enctype="multipart/form-data"> 
<select style="visibility:hidden" hidden="hidden" class="form-control" th:field="*{typeTo}"> 
    <option th:each="book : ${session.Book}" th:value="${book.getClass().getSimpleName()}"></option> 
</select> 

dieser Ansatz mit der variablen String typeTo in meinem Controller gesetzt ist, aber damit ist es nicht.

<input th:with="bookType=${session.Book[1]}" type="hidden" th:field="*{typeTo}" th:value="${bookType.getClass().getSimpleName()}" /> 

Kann mir jemand erklären, was hier passiert und wie kann ich es beheben, würde ich verwenden den zweiten Ansatz bevorzugen, da ich einen anderen wählen, und ich bin Replizieren der gleiche Code nur eine andere Variable zu setzen.

Danke!

public class RelationshipDTO { 

    private String typeFrom; 
    private String typeTo; 
    private String dataFrom; 
    private String bookTo; 
    ...setters and getters 

}

Und die Aussicht:

<input type="hidden" th:field="${relationshipDTO.dataFrom}" /> 
<input type="hidden" th:field="${relationshipDTO.typeFrom}" /> 
<div class="form-group"> 
<label for="anotherBook" class="col-sm-5 control-label">TO</label> 
<select class="form-control" th:field="${relationshipDTO.bookTo}"> 
    <option th:each="book : ${session.Book}" th:value="${book.name}" th:text="${book.name}"></option> 
</select> 
//This is the null field 
<input th:with="bookType=${session.Book[1]}" type="hidden" th:field="${relationshipDTO.typeTo('hola')}"/> 
        </div> 

Antwort

0

Ich glaube, Sie Konzepte mischen, wenn Sie sagen, thymeleaf dass Sie die Werte aus einem Formular übertragen wird, und mit einem bestimmten Objekt Dann müssen Sie das Feld th: field, aber th: value verwenden.

Hatten auch Sie einen Tippfehler in dem Tag

th: mit = "booktype = $ {session.Book [1]}"

Sie wurden die Zuordnung zu einer Anforderungsvariable „booktype "In der Eingabe.

Versuchen mit nur dies:

<input th:with="${session.Book[1]}" type="hidden" th:field="*{typeTo}"/> 

gehe ich davon aus das Attribut typeTo in Ihr Objekt relationshipDTO ist.

+0

Ich habe versucht, aber meine Eigenschaft ist immer noch null. Wie kann Thymeleaf wissen, welche Daten ich an das Feld typeTo senden möchte? – sirandy

+0

Wenn es sich um ein primitives oder standardmäßiges Java-Objekt handelt, bindet spring den Wert des zu konvertierenden Feldes in String, Integer, ... Wenn es sich um ein benutzerdefiniertes Objekt oder eine Enumeration handelt, die Sie für Ihre Geschäftslogik erstellt haben, müssen Sie die ID festlegen dein Objekt oder wenn es ein Name ist. Bitte lass mich deine Entity wissen, wie es aussieht und ich werde versuchen, dir ein gutes Beispiel zu geben. – cralfaro

+0

Eigentlich ist es nicht wirklich eine Entität. Aus einer Datei lade ich die Elemente in die Sitzung hoch und lege sie in Listen. – sirandy