【freemarker】渲染列表一系列操作
数据模型:
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 List<AddressVo> addressVoList; 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<AddressVo> getAddressVoList() {
return addressVoList;
} public void setAddressVoList(List<AddressVo> addressVoList) {
this.addressVoList = addressVoList;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
@GetMapping("list")
public String list(Model model){ List<UserVo> userVoList=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模板
<table style="width: 1000px;height: auto" cellpadding="1" cellspacing="1">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>地址</th>
<th>生日</th>
<th>操作</th>
</tr>
</thead>
<#list userList as user >
<tr>
<#--防止user里没有name-->
<td>${user.name!}</td>
<td>${user.age!}</td>
<td>
<#--防止user的addressVoList为空-->
<#list user.addressVoList!>
<#items as address>
${address.name!} <#sep >,
</#items>
<#else >无地址
</#list>
</td>
<td>
${(user.birthday?string("yyyy-MM-dd"))!"日期不存在"}
</td>
<td>
<#if user?is_even_item>偶数
<#else> 奇数
</#if>
${user?counter}
</td>
</tr>
</#list>
</table>
展示:
1、freemarker格式化日期防止为空导致异常。
2、freemark遍历列表防止值为空导致异常。
【freemarker】渲染列表一系列操作的更多相关文章
- React.js 小书 Lesson13 - 渲染列表数据
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson13 转载请注明出处,保留原文链接和作者信息. 列表数据在前端非常常见,我们经常要处理这种类型 ...
- 问题:JFinal框架使用FreeMarker渲染视图报错
本人用的是JFinal-3.4. 问题描述: 在JFinal框架中使用FreeMarker渲染视图时,报 Caused by: java.lang.ClassNotFoundException: fr ...
- itextpdf freemarker渲染
现有需求涉及到打印pdf操作,简单找了俩种方式 在现有的模板上进行编辑,操作难度比较大 通过freemarker生成静态页面,在进行转换html,完美. 关于动态生成pdf,网上参考的挺多的,看来看去 ...
- 为什么你需要在用 Vue 渲染列表数据时指定 key
本文改写整理自一篇博文,原文链接如下: Why you should use the key directive in Vue.js with v-for Application state and ...
- python学习04——列表的操作
笨办法学python第38节 如何创建列表在第32节,形式如下: 本节主要是讲对列表的操作,首先讲了 mystuff.append('hello') 的工作原理,我的理解是,首先Python找到mys ...
- (转载)Python 列表(list)操作
(转载)http://blog.csdn.net/facevoid/article/details/5338048 创建列表sample_list = ['a',1,('a','b')] Python ...
- Python基础学习8---list列表的操作
a_list = ['hello','world',1,'shanghai',3.99] #列表添加操作的4种方法 #1. 通过+ 字符来拼接 a_list = a_list + [1,'wuhan' ...
- 用Vue实现状态列表的操作涵盖所有的知识点
用Vue实现状态列表的操作涵盖所有的知识点
- python字符串,列表常用操作
24天养成一个好习惯,第五天! 一.字符串需要掌握的操作 1.取值(索引取值)需要注意的是只能取,不能改 msg = 'hello world' print(msg[4]) 2.切片(顾头不顾尾) m ...
随机推荐
- basename 显示文件名或目录名
1. 命令功能 basename 显示文件名或目录名,不显示文件的全路径文件名 2. 语法格式 basename 文件路径名 3. 使用范例 [root@localhost data]# basen ...
- SpringBoot 利用freemaker生成静态页面
1. <!-- freemarker模板 --> <dependency> <groupId>org.springframework.boot</groupI ...
- $LCT$维护子树信息学习笔记
\(LCT\)维护子树信息学习笔记 昨天\(FDF\)好题分享投了 \([ZJOI2018]\)历史 这题. 然后我顺势学学这个姿势. 结果调了一年...于是写个笔记记录一下. 基本原理 比较显然地, ...
- 一篇文章理解JS数据类型、深拷贝和浅拷贝
前言 笔者最近整理了一些前端技术文章,如果有兴趣可以参考这里:muwoo blogs.接下来我们进入正片: js 数据类型 六种 基本数据类型: Boolean. 布尔值,true 和 false. ...
- AIX下绑定双网卡
摘要 AIX下绑定双网卡,实现IP地址的高可用.为后续按照oracle11gRAC环境做准备. 收 藏 生产环境中是将不同网卡的不同网口进行绑定.比如A网卡有A1,A2网口:B网卡有B1,B2网口 ...
- MAN VGEXTEND
VGEXTEND(8) VGEXTEND(8) NAME/名称 vgexten ...
- .Net Core 学习目录(搁置)
简介 .NET Core 是.NET Framework的新一代版本,是微软开发的第一个官方版本,具有跨平台 (Windows.Mac OSX.Linux) 能力的应用程序开发框架 (Applicat ...
- 用soapUI开发webservice接口
1,下载soapUI软件,安装到本地 2,打开soapUI软件 3,创建一个开发好的接口 4,进行接口调用 测试:
- 检测代理IP匿名程度的方法,很实用
做网络的基本都知道代理,这个是肯定的,不管是用花刺还是猎手的网页代理,还是直接VPN的通道代理,代理有着不用说大家也知道的重要性.不管是做CPA还是做点击亦或者投票,代理都能帮我们一下,虽然帮的忙不大 ...
- log4j file 路径
默认以System.getProperty("user.dir")为准 用LOGGER.warn(System.getProperty("user.dir")) ...