Как отправлять данные с переключателей на контроллер с помощью Thymeleaf

#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 , как и раньше.