如何使用Thymeleaf将数据从单选按钮发送到Controller

时间:2014-06-23 12:16:23

标签: 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>

在这里你得到了我能看到的东西:

radios

我想将这些数据发送给我的控制器,所以我创建了一个:

@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;
    }

}

但我不知道如何用百里香来设定价值。

我想获得一个映射:

camera -> B
video -> C
你可以帮我这么做吗?当然,我的想法是创建一个HashMap,如果有任何其他解决方案,我会改变它。

提前谢谢

1 个答案:

答案 0 :(得分:3)

根据6.4.1 Setting and getting basic and nested properties,您应该在生成的HTML中使用<input>个名称priorities[camera]来使其生效。

尝试以下方法:

<input type="radio" th:name="${'priorities[' + item + ']'}" value="a" />