数据模型:
public class AddressVo implements Serializable { private static final long serialVersionUID = 1137197211343312155L; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public AddressVo(String name) { this.name = name; } public AddressVo() { }}
public class UserVo implements Serializable { private String name; private Integer age; private ListaddressVoList; private Date birthday; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public List getAddressVoList() { return addressVoList; } public void setAddressVoList(List addressVoList) { this.addressVoList = addressVoList; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; }}
@GetMapping("list") public String list(Model model){ ListuserVoList=new ArrayList<>(); for (int i=0;i<5;i++){ UserVo userVo=new UserVo(); userVo.setName("张三"+i); if(i!=3){ userVo.setAddressVoList(Arrays.asList(new AddressVo("上海"+i),new AddressVo("北京"+i))); } userVo.setAge(i*5); if(i!=2){ userVo.setBirthday(DateTime.now().plusDays(i).toDate()); } userVoList.add(userVo); } model.addAttribute("userList",userVoList); return "userList"; }
freemarker模板
姓名 | 年龄 | 地址 | 生日 | 操作 |
---|---|---|---|---|
${user.name!} | ${user.age!} | <#--防止user的addressVoList为空--> <#list user.addressVoList!> <#items as address> ${address.name!} <#sep >, <#else >无地址 | ${(user.birthday?string("yyyy-MM-dd"))!"日期不存在"} | <#if user?is_even_item>偶数 <#else> 奇数 ${user?counter} |
展示:
1、freemarker格式化日期防止为空导致异常。
2、freemark遍历列表防止值为空导致异常。