Я бы хотел заполнить элемент управления радиовходом в Thymeleaf автоматически из типа перечисления Java, называемого «источник». Я использую Spring Boot в бэкэнде.
Мой контроллер инициализирует список значений перечисления следующим образом:
this.sourcesAsList = Arrays.asList(Source.values());
model.addAttribute("sources", sourcesAsList);
Это прекрасно работает, по крайней мере, в том, что касается List (как я вижу в выходных данных журнала).
Затем шаблон Thymeleaf пытается создать экземпляр радиоуправления на основе этого атрибута в модели, например:
<div th:each="source : ${sources}">
<input type="radio" th:field="*{source}" th:value="${source.value}"/><label th:text="| ${source.value} |">Should not see this !</label>
</div>
Однако, когда я пытаюсь загрузить эту страницу, я получаю следующую ошибку:
[Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/feedbackapp2.html]")] with root cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'source' available as request attribute
Перечисление довольно простое:
public enum Source {
VALONE, VALTWO, VALTHREE, VALFOUR;
public String getName() {
return this.name();
}
}
Это первый раз, когда я работаю с Thymeleaf, так что я предполагаю, что это где-то просто проблема синтаксиса, но даже после поиска в Google я не смог найти работающий пример. Есть идеи? Можно ли вообще сделать это с помощью enum? Если нет, какой тип данных будет более подходящим?
Большое спасибо.
Ура
Martin