我使用百里香叶将表格发布到控制器。表单的字段是名为person的对象。在控制器中,我打印这个字符串,它看起来像一个包含人的所有字段的地图 现在,我只需要人的id,所以我可以得到人物对象。我尝试将参数更改为Person,但它表示无法将String转换为person。我知道的唯一方法是使用正则表达式。但我认为这有点愚蠢。有没有简单的方法来解决它?
以下是 HTML
<form action="#" class="form-horizontal center-block"
style="width: 40%" th:action="@{/index}" th:object="${project}" method="post">
<select th:field="*{person}">
<option th:each="person:${persons}" th:value="${person}" th:text="${person.name}">
Wireframe
</option>
</select>
</form>
起初,我有一个像这样的控制器
@PostMapping("/index")
public String save(String projectName, Person person, String description,
@RequestParam(name="subject")String subject, String date) {
System.out.println(person);
return "redirect:/index";
}
但我有一个错误,说无法将字符串转换为人。
然后我改变了控制器,就像这样
@PostMapping("/index")
public String save(String projectName, String person, String description,
@RequestParam(name="subject")String subject, String date) {
System.out.println(person);
return "redirect:/index";
}
在控制台中,我得到了这个Person(id=1, name=mike, age=44, sex=女)
。如果我想获得这个对象,我需要使用正则表达式来分割字符串,然后我将获得Id
有没有办法轻松获得人物对象?
答案 0 :(得分:1)
我解决了,改变html如下:
<form action="#" class="form-horizontal center-block" method="post"
style="width: 40%" th:action="@{/index}" th:object="${project}">
<select th:field="*{person}">
<option th:each="person:${persons}" th:value="${person.id}"
th:text="${person.name}">Wireframe</option>
</select>
</form>