Ich habe ein Domain-Objekt, das eine enum-Eigenschaft hat und ich möchte eine Dropdown-Liste mit allen möglichen enum-Werten im Formular für dieses Objekt anzeigen. Stellen Sie sich das folgende Objekt:Wie werden alle möglichen Enum-Werte in einer Dropdown-Liste mit Spring und Thymeleaf angezeigt?
public class Ticket {
private Long id;
private String title;
private State state;
// Getters & setters
public static enum State {
OPEN, IN_WORK, FINISHED
}
}
In meinem Controller habe ich eine Methode, die eine Form für dieses Objekt macht:
@RequestMapping("/tickets/new")
public String showNewTicketForm(@ModelAttribute Ticket ticket) {
return "tickets/new";
}
Die Vorlage sieht wie folgt aus:
<form th:action="@{/tickets}" method="post" th:object="${ticket}">
<input type="text" th:field="*{title}" />
<select></select>
</form>
Später sollte es in so etwas umgewandelt werden:
<form action="/tickets" method="post">
<input type="text" name="title" />
<select name="state">
<option>OPEN</option>
<option>IN_WORK</option>
<option>FINISHED</option>
</select>
</form>
Wie kann ich das Select-Tag erstellen? Der gewählte Wert sollte auch automatisch auf dem Ticket zugeordnet werden, so dass ich so etwas wie dies in der Steuerung kann:
@RequestMapping(value = "/tickets", method = RequestMethod.POST)
public String createTicket(@Valid Ticket ticket) {
service.createTicket(ticket);
return "redirect:/tickets";
}
Was ist der Zweck des T? – saml
Die Spring-EL-Syntax für den Zugriff auf einen Typ und das Aufrufen statischer Methoden oder das Abrufen statischer Eigenschaften. Siehe http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html#expressions-types – jchampemont
Am 'th: value = $ {{state}}' verwenden Sie die Conversion-Tags –