我有一个带有表单的freemarker页面,其中包含多个单选项,这些选项取自DB。
在这里,我将选项列表发送到页面:
@GetMapping("/download")
public String getDownloadMethod(ModelMap modelMap, RedirectAttributes redirectAttributes){
modelMap.addAttribute("filesList", dao.listAllFiles());
modelMap.addAttribute("getFile", new Model());
return "download-form";
}
然后是表格:
<form method="POST" action="/download-post">
<#if filesList??>
<#if filesList?size != 0>
<select name="files" value="getFile">
<#list filesList as file>
<option value="${file.id}">${file.id} - ${file.name}</option>
<br/>
</#list>
</select>
</#if></#if>
<br/>
<br/>
<br/>
<input type="submit" value="Get File"/>
</form>
我们选择其中一个选项,所选选项的ID应发送到控制器中的post方法:
@PostMapping( “/下载-后”) public String postDownload(@ModelAttribute(“getFile”)Model model,RedirectAttributes redirectAttributes){
redirectAttributes.addFlashAttribute("message",
"You successfully downloaded '" + model.getId() + " " + model.getName()+ "'");
return "redirect:/downloadStatus";
}
然而,当我执行代码时,我总是得到model.id的“0”值和model.name
的null我应该如何正确绑定表单中的值,以便将它们正确地发送给控制器?
差异from this question是我的选项列表不是静态的,而是从数据库中选择的,可能有数百个选项,您无法预先定义。