「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」
列表
{{*var}}
-
login-less果然是名不虚传的。从文本到图片,再由表格到现在的列表关于语法方面我们基本上没有学习成本,全部都是不同的特殊符号组成的不同的功能。 -
这回让我们的重点来到
NumbericRenderData. 顾名思义就是数字排序,准确的说是列表排序因为排序和数字一样有顺序而言。 -
NumbericRenderData应该是最简单的使用了,个人觉得。因为在NumbericRenderData内部我们只需要提供列表数据,简而言之就是我们只需要提供一份List数据即可。而这份list里面的元素就是我们的TextRenderData -
那么有人就会问了列表展示该如何控制样式呢?
-
左侧是我们实际默认导出列表的样式属于无序列表。右侧是我放大了word中有序列表中的个别样式截图。如果我想导出来有序列表该如何实现呢?
-
我们可以看到在
NumbericRenderData中已经为我们准备了一些列表样式了。这里我们直接在构建的时候选择显示样式即可
@Test
public void seriListTest() {
String name = "serlist";
Map<String, Object> map = new HashMap<>();
TextRenderData iphone = new TextRenderData("iphone");
TextRenderData macbook = new TextRenderData("macbook");
TextRenderData ipad = new TextRenderData("ipad");
TextRenderData ipod = new TextRenderData("ipod");
TextRenderData watch = new TextRenderData("watch");
List<TextRenderData> textRenderData = Arrays.asList(iphone, macbook, ipad, ipod, watch);
map.put("list", new NumbericRenderData(NumbericRenderData.FMT_DECIMAL,textRenderData));
init(name,map);
}
NumbericRenderData.FMT_DECIMAL对应的就是1,2,3列表样式。这里我们直接看效果吧。
- 目前
poi-tl支持的列表样式有如下规则。关于如何自定义样式呢?其实只要自己重写NumbericRenderData就行了。
区块对
{{?section}}{{/section}}
- 咋一听这名次感觉很新颖。实际呢我们可以和xml或者html等语法中标签进行同步理解。因为他在
poi-tl就是起到一个包裹的作用。
- 虽说他是包裹的作用,但是不仅仅是包括。区块对确切的说充当了我们Java语言中的if 和 for两个作用。
| 场景 | 作用 |
|---|---|
null|false|空集合 | 隐藏区块对间内容 |
非false&&非集合 | 显示且仅显示一次内容 |
非空集合 | 循环遍历显示内容 |
- 下面我们针对上面三种情况来进行测试,首先看看效果和模板配置
@Test
public void blockTest() {
String name = "block";
Map<String, Object> map = new HashMap<>();
Map<String, String> userMap = new HashMap<>();
List<Map<String, String>> list = new ArrayList<>();
list.add(new HashMap<String, String>(){
{
put("name", "zhangsan");
put("age", "18");
}
});
list.add(new HashMap<String, String>(){
{
put("name", "lisi");
put("age", "20");
}
});
map.put("none", null);
map.put("show", new HashMap<String,String>(){
{
put("appleProduction", "macbook pro m1 pro");
}
});
map.put("list", list);
init(name,map);
}
- 怎么样,区块对还是很好理解的吧。记住万能公式。
区块对=if+for