Spring的form标签库动态获取后端List或Map数据
Select 、checxDoves、 radicbotons、都可以使用ltems 制定数据源可以是list(当List的泛型是jaaBeran的时候需要制定itemValue和itemLabel)、 map(不需要制定itemValue和itemLabel)。
使用@ModelAttribute在请求方法之前进行数据注入:
@ModelAttribute
public void initData(Model model){
Map<String,String> map = new HashMap<>();
map.put("1","睡觉");
map.put("2","躺床");
model.addAttribute("map",map);
}
注入数据为Map:
使用form标签动态接收数据
<div>
hobbies:
<form:checkboxes path="hobbies" items="${map}"></form:checkboxes>
</div>
成功获取到Map数据。
注入数据为javaBean:
需要指定itemLabel和itemValue。
创建Hobby类:
package cn.cdulm.entity;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Component
public class Hobby {
private Integer id;
private String name;
public Hobby() {
}
public Hobby(Integer id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Hobby{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Hobby hobby = (Hobby) o;
return Objects.equals(id, hobby.id) && Objects.equals(name, hobby.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
数据注入:
@ModelAttribute
public void initData(Model model){
List<Hobby> ls = new ArrayList<>();
Hobby hobby1 = new Hobby(1,"睡觉");
Hobby hobby2 = new Hobby(2,"躺床");
ls.add(hobby1);
ls.add(hobby2);
model.addAttribute("ls",ls);
}
前端获取:
<form:checkboxes path="hobbies" items="${ls}" itemLabel="id" itemValue="name"></form:checkboxes>
显示id,值为name:
可以发现,页面显示的是设置的id,而获取到的值是id对应的name。