【发布时间】:2019-03-26 12:56:10
【问题描述】:
我有一个包含项目列表的下拉菜单。我的问题是我想收到我选择的值,但我收到的是 null。
<form action="#" th:action="@{/cidashboard/table}" th:object="${projectVariantSelected}" method="post">
<p>Project variants options:</p>
<select class="form-control" th:field="*{projectVariantId}" >
<option th:each = "projectVariant : ${projectsVariants}"
th:value="${projectVariant.projectVariantId}"
th:text="${projectVariant.projectVariantName}" >
</option>
</select>
<input type="submit" value="Submit" />
</form>
我创建了一个 GET 请求:
public final Map< String, Object > modelAtribute = new HashMap< String, Object >();
@GetMapping("cidashboard/filter/data")
public String allDataForFilter(Model model, ModelAndView modelAndView) {
model.addAttribute("projectsVariants", projectVariantService.findAllProjectsVariants());
addAttributes(modelAtribute);
return "test2";
}
@ModelAttribute
public void addAttributes(Map<String, Object> model) {
model.put("projectVariantSelected", new ProjectVariant());
}
我的 POST 请求看起来像这样:
@PostMapping("cidashboard/table")
public String createTable(@ModelAttribute("projectVariantSelected") ProjectVariant projectVariantSelected) {
System.out.println("Project Variant selected: " + projectVariantSelected.getProjectVariantName() + " " + projectVariantSelected.getProjectVariantId());
return "test1";
}
当我尝试打印收到的输出时:
Project Variant selected: null 0
【问题讨论】:
-
您的“projectVariantSelected-Hack”是不必要的。只需将 ID 发送到 createTable 方法即可。无需绑定。
-
我删除了 th:object 并写道:
-
试试
-
非常感谢!它有效:)
标签: spring spring-mvc spring-boot thymeleaf