我需要使用字符串列表中的所有值填充下拉列表。
控制器类
@RequestMapping(value = "/generateIds", method = RequestMethod.GET)
public String launchPage(Model model) {
List<Municipality> municipalities = rCountryService.finaAllMunicipalities();
//assume the list is populated with values
List<String> countryName = new ArrayList<String>();
for(int i=0; i<municipalities.size(); i++) {
countryName.add(municipalities.get(i).getCountry().toString());
}
model.addAttribute("countryName ", countryName );
return "generateIds";
}
我不知道从哪里开始HTML,所以我从这个
开始<select th:field="*{countryName }">
<option value="default">Select a country</option>
<option th:each="${countryName }" th:value="${countryName }"th:text="${countryName }"/>
</select>
我的html / controller应该如何将列表中的所有元素添加为下拉选项?
提前致谢!
答案 0 :(得分:16)
这就是我填充下拉列表的方式。我认为这可能有助于您了解它。
控制器
CanExecute
模型
List<Operator> operators = operatorService.getAllOperaors()
model.addAttribute("operators", operators);
查看
@Entity
@Table(name = "operator")
public class Operator {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@JsonIgnore
private Long id;
@NotBlank(message="operator Name cannot be empty")
@Column(name = "operator_name", nullable = false)
private String operatorName;
getters and setters ...
}
答案 1 :(得分:8)
首先感谢您的问题和答案!我已经完成了这个解决方案。
我的模特
List<Test> test = new ArrayList<>();
model.addAttribute("test", test);
List<Test> tests = testRepository.findAll();
model.addAttribute("tests", tests);
我的观点
<div class="col-lg-3" th:object="${test}">
<select class="form-control" id="testOrder" name="testOrder">
<option value="">Select Test Order</option>
<option th:each="test : ${tests}"
th:value="${test.testCode}"
th:text="${test.testCode}+' : '+${test.testName}"></option>
</select>
</div>
我的HTML
UITableView
我的结果
答案 2 :(得分:0)
您仅在视图中需要此代码。
List<Test> tests = testRepository.findAll();
model.addAttribute("tests", tests);
答案 3 :(得分:0)
要为模型中返回的String列表生成下拉列表,您只需要使用这些行。您无需使用额外的getter和setter方法创建任何模型类。您的代码是正确的,您只是错过了用于将返回的值存储在th:each的countryName列表中的变量名。
<select th:field="*{countryName}">
<option value="">Select Country</option>
<option th:each="country : ${countryName}" th:value="${country}" th:text="${country}"></option>
</select>
答案 4 :(得分:0)
我已经实现了类似的操作,需要从数据库中填充下拉列表。为此,我从控制器中检索了数据,如下所示:
@GetMapping("/addexpense")
public String addExpense(Expense expense,Model model){
model.addAttribute("categories",categoryRepo.findAll());
return "addExpense";
}
然后在百里香中,我使用了以下代码。
<div class="form-group col-md-8">
<label class="col-form-label">Category </label>
<select id="category" name="category" th:field="*{category.id}" >
<option th:each="category : ${categories}" th:value="${category.id}" th:utext="${category.name}"/>
</select>
</div>