#spring #spring-mvc #thymeleaf
#spring #spring-mvc #thymeleaf
Вопрос:
У меня есть простая HTML
страница, на которой я показываю несколько radio buttons
:
<form action="#" th:action="@{/processForm}" th:object="${priorities}"
method="post">
<fieldset>
<table style="width: 500px">
<tr th:each="item : ${chosen}">
<td>
<div>
<div>
<label th:text="${item}">example</label>
<input type="radio" th:name="${'priorities[' item ']'}" value="a" />A
<input type="radio" th:name="${'priorities[' item ']'}" value="b" />B
<input type="radio" th:name="${'priorities[' item ']'}" value="c" />C
</div>
</div>
</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td>
<button type="submit"
class="btn btn-xs btn-primary margin10-right paddingNew"
name="save">Calculate!</button>
</td>
<td></td>
</tr>
</table>
</fieldset>
</form>
Здесь вы получили то, что я вижу:
Я хотел бы отправить эти данные на свой контроллер, поэтому я его создал:
@RequestMapping(value = "/processForm", method = RequestMethod.POST)
public String save(@ModelAttribute(value = "foo") ClusterParams foo,
@ModelAttribute(value = "priorities") HashMap<String, String> priorities,
final ModelMap m) throws ClassNotFoundException, IOException,
InterruptedException {
for (String s : priorities.keySet()) {
System.out.println(s);
}
}
Здесь вы можете увидеть мои веса классов (удалены):
public class Weights {
Map<String, String> priorities = new HashMap<String, String>();
public Map<String, String> getPriorities() {
return priorities;
}
public void setPriorities(Map<String, String> priorities) {
this.priorities = priorities;
}
}
но я понятия не имею, как установить значения с помощью thymeleaf.
Я хотел бы получить сопоставление:
camera -> B
video -> C
Не могли бы вы помочь мне сделать это? Конечно, это моя идея с созданием HashMap, если есть какое-либо другое решение, я его изменю.
Заранее благодарю вас
Ответ №1:
В соответствии с 6.4.1 Настройка и получение базовых и вложенных свойств, у вас должны быть <input>
имена, такие как priorities[camera]
в сгенерированном HTML, чтобы он работал.
Попробуйте следующее:
<input type="radio" th:name="${'priorities[' item ']'}" value="a" />
Комментарии:
1. Привет, спасибо. Я изменил свою
html
страницу и свойcontroller
(я отредактировал свой пост). Я не вижу никаких выходных данных.. Я изменил имена, и все выглядит хорошо, но это не работает. Заранее благодарю вас.2. Ваш контроллер должен принимать
Weights
, как и раньше.