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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)