【问题标题】:How to use <@spring.formMultiSelect> with Spring boot?如何在 Spring Boot 中使用 <@spring.formMultiSelect>?
【发布时间】:2017-12-15 16:51:50
【问题描述】:
我正在处理一个需要多选框的表单。我在使用 时找到了this link,但文档对我来说不是很清楚。
有人可以解释什么是路径、选项和属性吗?这将非常有帮助。
更多信息:
我正在尝试使用 Spring Boot 和 Freemarker 创建一个基本表单。我在数据库中有一个用户列表,我想在多选框中显示其名称。我有 DAO 类来从数据库中获取用户名,并有一个控制器类来显示 .ftl 页面。我对 Spring 和 Freemarker 完全陌生,需要一些关于如何实现 的指导。
提前致谢!
【问题讨论】:
标签:
java
spring
spring-mvc
spring-boot
freemarker
【解决方案1】:
-
path 是您要绑定的字段。
-
option是多选的选项
-
属性是输入的其他字段
例子:
表格...
public class PersonForm {
private String name;
// Getter Setter
}
还有控制器……
@Controller
public class Controller{
@GetMapping(value = "/")
public String getPersonForm(Model model){
PersonForm personForm = new PersonForm();
model.addAttribute(personForm);
}
}
问
<@spring.formInput "personForm.name"
"id='some-id' placeholder='Enter name' class='some-class-for-input'" />
对于这个例子,“personForm.name”是路径,第二行是属性字段
在您的示例选项中,映射类似于 { "1": "Male", "2": "Female" }
spring.ftl 代码...
<#macro formMultiSelect path options attributes="">
<@bind path/>
<select multiple="multiple" id="${status.expression?replace('[','')?replace(']','')}" name="${status.expression}" ${attributes?no_esc}>
<#list options?keys as value>
<#assign isSelected = contains(status.actualValue?default([""]), value)>
<option value="${value}"<#if isSelected> selected="selected"</#if>>${options[value]}</option>
</#list>
</select>
</#macro>