我正在尝试将 Spring Boot、thymeleaf 中的下拉列表中的值保留在数据库中,但是数据库填充了空值。
显然 Controller 没有传递该值。
虽然我可以在 GET 中获取并显示值,但无法在 POST 中保留它们。
我无法从任何地方获得清晰的示例,甚至 Thymeleaf 上的示例也不清楚。
请提供一些好的示例或解决方案。
代码如下。
@Controller
public class HomeController {
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String signupPost(@ModelAttribute("user") User user,
Model model, BindingResult result) {
if (!result.hasErrors()) {
userService.saveUser(user);
}
return "redirect:/";
}
}
User
类如下
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id", nullable = false, updatable = false)
private Long userId;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "award_partner_id")
private AwardPartner awardPartner;
getters and setters....
}
HTML 片段在这里:
<!--Award Partner-->
<div class="form-group">
<label class="col-md-4 control-label">Award Partner</label>
<div class="col-md-6 selectContainer">
<div class="input-group">
<span class="input-group-addon"><i
class="glyphicon glyphicon-list"></i></span>
<select name="awardPartner" roleId="awardPartner" id="awardPartner"
th:field="*{awardPartner}" class="form-control selectpicker">
<option value="">Select Award Partner</option>
<option th:each="awardPartner : ${awardPartners}"
th:value="${awardPartner.id}"
th:text="${awardPartner.title}"></option>
</select>
</div>
</div>
</div>
<!-- end snippet -->
最佳答案
在您的表单标记中,我认为有 th:object="user"
。
在您选择的标签中,有 th:field="*{awardPartner}"
。这意味着您将把选定的值(选定的选项标签的值)放入对象用户的字段awardPartner中。此字段 awardPartner
的类型为 AwardPartner
在选项值中,您有一个 id(int 或 string?)作为值,但不是 AwardPartner
类型的对象
关于java - Spring Boot Thymeleaf 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46754705/