Java Thymeleaf下拉选择
我正在为我的一个java项目使用Thymeleaf。 现在,我试图实现的是,当我从下拉列表中选择其他内容,而不是默认值“ALL”,然后按下submit按钮[POST],以获取所选项目的详细信息。我希望在提交后,将所选项目显示在下拉列表中。它现在所做的就是返回默认值。如果我在下面提供的代码中添加属性selected,那么它会从列表中选择所有项目,这也是不可接受的,因为它最终总是显示列表的最后一项Java Thymeleaf下拉选择,java,html,spring-boot,thymeleaf,Java,Html,Spring Boot,Thymeleaf,我正在为我的一个java项目使用Thymeleaf。 现在,我试图实现的是,当我从下拉列表中选择其他内容,而不是默认值“ALL”,然后按下submit按钮[POST],以获取所选项目的详细信息。我希望在提交后,将所选项目显示在下拉列表中。它现在所做的就是返回默认值。如果我在下面提供的代码中添加属性selected,那么它会从列表中选择所有项目,这也是不可接受的,因为它最终总是显示列表的最后一项 <div class="controls"> <select class="
<div class="controls">
<select class="form-control" name="example" id="example">
<option value="0">ALL</option>
<option th:each="user : ${allUsers}" th:value="${user.id}" th:text="${user.name}">
</option>
</select>
</div>
全部的
我的控制器要获取列表,我尽可能简单:
@ModelAttribute("allUsers")
public List<User> allUsers() {
List<User> userList= repo.findAll();
return userList;
}
@modeldattribute(“诱惑者”)
公开名单{
List userList=repo.findAll();
返回用户列表;
}
我还要指出,我的目标是:
<form class="form-search" action="#" method="post"
th:action="@{/combinedsearch}"
th:object="${combinedreport}">
所以用这种方法是行不通的
,因为我的对象实际上没有用户字段
有什么想法吗?帮助?基本上我所做的是在一个combinedReport控制器中,我提取了该用户ID,我在提交HTML表单后收到该ID,然后我将其用于后端需要执行的任何操作,然后我将该用户ID发送回前端,只需将其作为属性添加到模型中:
model.addAttribute(“lastselected”,userId)代码>
然后,我在用户对象中创建了自定义逻辑方法:
public boolean isSelected(Integer userId){
if (userId != null) {
return userId.equals(id);
}
return false;
}
然后,我将my thymeleaf模板中的代码修改为:
<select class="form-control" name="example" id="example">
<option value="0">ALL</option>
<option th:each="user : ${allUsers}"
th:value="${user.id}"
th:selected="${user.isSelected(lastselected)}"
th:text="${user.name}">
</option>
</select>
全部的
还有Baaam!它就像一个符咒 不需要在后端实现该方法,只需使用SPEL表达式eq
<select class="form-control" name="example" id="example">
<option value="0">ALL</option>
<option th:each="user : ${allUsers}"
th:value="${user.id}"
th:selected="${user.id eq lastselected}"
th:text="${user.name}">
</option>
全部的
注意:当循环遍历枚举时,请记住调用.name(),以便比较字符串值。将用户字段添加到CombinedReport类中有什么问题?CombinedReport是实体对象吗?我已在下面发布了我自己的问题解决方案。因此,这不再是一个悬而未决的问题。我有一个带有select
字段的表单,如果我使用th:field
,thymeleaf会更改name属性,它在我的后端抛出一个错误。因此,我使用了类似于您的解决方案的方法作为解决方案,这样我就得到了所需的名称
属性,而不是thymeleaf从对象名称中指定的属性。