[[toc]]

第五节 表单标签

主要的目的是在页面上实现表单回显。最典型的情况是在修改数据时,把之前旧的数据重新显示出来供用户参考。

1、回显简单标签

一个标签回显一个值的情况。

①创建用于测试的实体类

public class Tiger {

  1. 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 />}

③页面表单回显

第五节 表单标签 - 图1

回显Tiger数据


老虎的id:

老虎的名字:

老虎的工资:

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()方法。

上一节 回目录 下一节