第五节 表单标签
主要的目的是在页面上实现表单回显。最典型的情况是在修改数据时,把之前旧的数据重新显示出来供用户参考。
1、回显简单标签
一个标签回显一个值的情况。
①创建用于测试的实体类
public class Tiger {
private Integer tigerId;<br /> private String tigerName;<br /> private Double tigerSalary;<br /> ……
②创建 handler 方法
@RequestMapping(“/form/redisplay/simple”)
public String simpleTagRedisplay(Model model) {
// 1.准备好用来回显表单的实体类对象<br /> // 在实际功能中,这里的对象应该是从数据库查询得到<br /> Tiger tiger = new Tiger();<br /> tiger.setTigerId(5);<br /> tiger.setTigerName("tomCat");<br /> tiger.setTigerSalary(666.66);
// 2.将实体类数据存入模型<br /> model.addAttribute("tiger", tiger);
return "form-simple";<br />}
③页面表单回显
回显Tiger数据
2、回显带选择功能的标签
①总体思路
- 显示标签本身,需要用到一个集合对象来存储标签本身所需要的数据
- 对标签执行回显操作,需要用到另外的一个实体类
②创建实体类
[1]用来显示标签的实体类
public class Season {
// 提交给服务器的值<br /> private String submitValue;
// 给用户看的值<br /> private String showForUserValue;<br /> ……
[2]用来回显数据的实体类
public class Paige {
private Integer paigeId;<br /> private String paigeName;<br /> private Season season;<br /> ……
③handler 方法
@RequestMapping(“/form/redisplay/choose”)
public String chooseTagRedisplay(Model model) {
// 1.准备用来显示标签的数据<br /> List<Season> seasonList = new ArrayList<>();<br /> seasonList.add(new Season("spring", "春天"));<br /> seasonList.add(new Season("summer", "夏天"));<br /> seasonList.add(new Season("autumn", "秋天"));<br /> seasonList.add(new Season("winter", "冬天"));
model.addAttribute("seasonList", seasonList);
// 2.准备用来回显表单的实体类数据<br /> Paige paige = new Paige();<br /> paige.setPaigeId(6);<br /> paige.setPaigeName("pig");<br /> paige.setSeason(new Season("summer", "夏天"));
model.addAttribute("paige", paige);
return "form-choose";<br />}
③页面表单回显
[1]单选按钮
th:each=”season : ${seasonList}”
th:value=”${season.submitValue}”
th:text=”${season.showForUserValue}”
th:checked=”${season.submitValue == paige.season.submitValue}”
/>
[2]下拉列表
[3]多选框
- 另外封装一个实体类
public class John {
private List<Season> seasonList;
public List<Season> getSeasonList() {<br /> return seasonList;<br /> }
public void setSeasonList(List<Season> seasonList) {<br /> this.seasonList = seasonList;<br /> }<br />}
- handler方法
@RequestMapping(“/form/redisplay/choose/multi”)
public String chooseMulti(Model model) {
// 1.准备用来显示标签的数据<br /> List<Season> seasonList = new ArrayList<>();<br /> seasonList.add(new Season("spring", "春天"));<br /> seasonList.add(new Season("summer", "夏天"));<br /> seasonList.add(new Season("autumn", "秋天"));<br /> seasonList.add(new Season("winter", "冬天"));
model.addAttribute("seasonList", seasonList);
// 2.准备用来回显表单的实体类数据<br /> John john = new John();<br /> List<Season> seasonListForRedisplay = new ArrayList<>();<br /> seasonListForRedisplay.add(new Season("summer", "夏天"));<br /> seasonListForRedisplay.add(new Season("winter", "冬天"));
model.addAttribute("seasonListForRedisplay", seasonListForRedisplay);
return "form-multi";<br />}
- 页面标签
th:each=”season : ${seasonList}”
th:value=”${season.submitValue}”
th:text=”${season.showForUserValue}”
th:checked=”${seasonListForRedisplay.contains(season)}”
/>
注意:此时需要判断一个对象是否在集合中,那就需要重写equals()和hashCode()方法。