このquestion regarding persisting select box elementsでは、選択したエンティティを選択メニューに残して、そのIDをコントローラに渡してビジネスレイヤに渡して、意図したとおりに持続させることができました。Thymeleaf + Springフォーム - コントローラから選択されたボックスの値を永続的にロードする方法
最初の一覧は列挙型です。これはうまく動作し、エンティティの編集時に選択した値が読み込まれます。
<div class="form-group">
<label th:for="databaseType">SQL Database Type:</label>
<select class="form-control" th:field="*{{databaseType}}">
<option th:each="databaseType : ${T(b.c.m.h.m.SqlDatabaseType).values()}"
th:value="${{databaseType}}"
th:selected="${databaseType == T(b.c.m.h.m.SqlDatabaseType)}"
th:text="${databaseType.databaseType}">
</option>
</select>
</div>
問題は以下のように定義されているリストオブジェクトである:
は<div class="form-group">
<label th:for="ftpConnection">FTP Connection:</label>
<select class="form-control" name="ftpId" >
<option th:each="ftpConnection : ${ftpList}"
th:value="${ftpConnection.getId()}"
th:text="${ftpConnection.getDescription()}">
</option>
</select>
</div>
この質問は今、むしろ逆です。エンティティの編集リンクをクリックすると、選択ボックスが選択ボックスのデフォルトエンティティ値に設定され、送信時にデフォルトエンティティのIDがコントローラに渡され、永続化されます。
リストの選択された値が、永続エンティティから正しくロードされたものであることを確認する方法はありますか?私は、運、そのかかわらず、試してみました
<div class="form-group">
<label th:for="ftpConnection">FTP Connection:</label>
<select class="form-control" name="ftpId" th:field="*{yourFieldName}" >
<option th:each="ftpConnection : ${ftpList}"
th:value="${ftpConnection.getId()}"
th:text="${ftpConnection.getDescription()}">
</option>
</select>
あなたがあなたの答えを説明してくれれば幸いです。 – jasonleonhard