FreeMarker集合(List、Map)
我们上一节认识了FreeMarker基本数据类型,接口认识FreeMarker集合(List、Map)
序列(List)
定义序列
<#-- 定义序列 --> <#assign mynums=[11,12,13,14,15,16,17,18,19]/> <#list mynums as mn> ${mn} </#list>
拆分序列
<#-- 拆分序列 --> <#-- 这里是将mynums序列中下标从3到6之间的元素拆分出来,组成一个新的序列 --> <#assign mynum01=mynums[3..6]/> <#list mynum01 as mn01> ${mn01} </#list>
字符串的拆分
${"你好,你来了吗今天看书了吗!"[0..8]}... 你好,你来了吗今天...
连续序列
<#-- 连续序列 --> <#-- 从55到58:注意此时若写成[55..58]或者[66..68]则会报错 --> <#assign num01=55..58/> <#list num01 as num> ${num} </#list> <#list 66..68 as num> ${num} </#list>
哈希表(Map)
定义哈希表
<#assign maps={"1":"张三","2":"李四"}> ${maps["1"]} |
张三 |
<#--以下代码可以将map的key转换为相应的序列--> <#assign keys=maps?keys> <#list keys as key> ${key}---${maps[key]} </#list> |
1---张三 2---李四 |
<#assign users={"username":"张三","password":"123"}> ${users.username}---${users["password"]} |
张三---123 |
注意:
FreeMarker中的哈希表要求其key必须是字符串,包括数据模型中的java.util.HashMap的key也要是字符串,否则报错
不能直接用list遍历map,需要先将map的key转换为相应的序列
本文链接:FreeMarker集合(List、Map),本文由huangyineng原创,转载请注明出处
2019-03-05 21:02
第一部分:freemarker基础
- springmvc freemarker 动态加载(不用重启tomcat立即生效)
- FreeMarker 判断List不为空
- Cannot expose request attribute 'website' because of an existing model object of the same name 的解决方案
- Java模板引擎 FreeMarker介绍
- FreeMarker入门教程
- FreeMarker基本标签的使用
- FreeMarker基本数据类型
- FreeMarker集合(List、Map)
- FreeMarker自定义指令
- FreeMarker四种变量的用法
- FreeMarker模板包含及名称空间
- freemarker 空值处理
第二部分:freemarker项目实战
知识点
相关教程
更多Map、List集合类的清空使用clear还是重新new呢
各位有经验的Javaer,请问使用Map、List这种集合类做缓存时,需要 每天清空一次数据,那么我是用集合自带的 clear方法好呢,还是直接重新 new一个新的集合,让原来的集合等待gc释放好呢?如果有这方面经验的朋友说说各种方法的利弊,以及企业中 常用的解决方案 问题补充: silentJesse 写道 量大的时候用clear好 ,量小的时候都可以 用new
这个是list<xx>集合。我想把相同的stepid 放到一个map集合中
这个是list<xx>集合。我想把相同的stepid 放到一个map集合中 问题补充:输入和输出是一样的数据类型String 就想通过list循环把stepid相同的的username_o,username_r列放到一个Map当中。然后循环这个集合把stepid相同的显示到一起。 问题补充:输入和输出是一样的数据类型String 就想通过list循环把step
FreeMarker 判断List不为空
FreeMarker判断一个对象是否为空使用??,这个同意使用于List,如:<#if article.attachements??>,通常情况下我们还要判断List的是否包含元素,这样使用?size了,如:<#if article.attachements?? && article.attachements?size gt 0>
java中list、set和map 的区别(转)
List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashM
el表达式判断list集合是否为空
用过struts的标签,也接触过spring的标签,不过我个人觉得el表达式是最好用的。el表达式判断一个对象是否为空,用empty关键字即可,当然,在前面加上!表示不为空,示例如下
怎样用Struts2的lambda表达式取一个map集合的子集
前台的jsp代码是这样的。 <s:select cssStyle=" width:200px" key="product.blocode" list="codeGroupsMap['BLOCINFO'].codeMap" headerKey=""headerValue="选择..">&
struts2 的标签遍历:list<map<String,String>>
google半天了,没有这个类型的 谢谢了 问题补充: 能不能给个简单的模型,我这实在调不同了 谢谢
FreeMarker标签与使用
模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选择使用freemarker或velocity作为view,模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成servlet,那么这个过程是很慢
FreeMarker基本标签的使用
上一节我们接触了一个FreeMarker很简单的例子FreeMarker入门教程,说到底,就是替换模板里相应的标签,这一节我们写一下FreeMarker基本标签的使用
如何取得Map当中的key
我定义了一个Map:Map<BufferedImage,Rectangle[]> map = new <BufferedImage,Rectangle[]>(); 现在我想取得map当中的key:BufferedImage image = (BufferedImage)map.keySet(); 这样有什么问题,说是类型转换异常,我应该怎么取?
List用完后需要赋null吗
从数据库查询N条记录放在List集合中,然后通过request对象返回给页面,通过循环遍历将List中的数据输出到页面。 请问在循环结束后,需要将该list=null吗?
map遍历问题
有一个map如下: map.put(key,value); key =components value= { component_1={backurl_1=xxxxxxxxxxx, backdate_1=2010-10-21, backname_1=back1}, component_2={backdate_2=2010-10-21, backurl_2=xxxxxxxxxxx, bac
FreeMarker入门教程
在Java模板引擎 FreeMarker介绍中,我们已经对freemarker有了一定的了解,这一节是FreeMarker入门教程。下载freemarker,定义模板文件,输出到控制台和文件中
Java SE-容器/集合
1.集(Set) Set集合中不区分元素顺序 Set集合中不允许出现重复元素(“重复元素”是指按照equals方法判断为等价对象) 2.列表(List) List集合区分元素顺序(记录元素加入的顺序)、允许包含重复的元素 List的基本特征是将其元素以线性方式存储 3.映射(Map) 映射中保存成对的“键-值”(Key-Value)信息,检索数据(Map集合中元素)时必须提供相应的&qu
springboot 整合freemarker
在maven pom.xml文件中加入spring-boot和freemarker的依赖,可以再application.yml配置freemarker相关参数,然后直接在classpath: /templates/创建freemarker模板文件.ftl即可使用
最新教程
更多java线程状态详解(6种)
java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞
redis从库只读设置-redis集群管理
默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave. 127.0.0.1:6382> set k3 111 (error) READONLY You can't write against a read only slave. 如果你要开启从库
Netty环境配置
netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。
Netty基于流的传输处理
在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据
Netty入门实例-使用POJO代替ByteBuf
使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。
Netty入门实例-时间服务器
Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现
Netty入门实例-编写服务器端程序
channelRead()处理程序方法实现如下
Netty开发环境配置
最新版本的Netty 4.x和JDK 1.6及更高版本
电商平台数据库设计
电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表
HttpClient 上传文件
我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。
MongoDB常用命令
查看当前使用的数据库 > db test 切换数据库 > use foobar switched to db foobar 插入文档 > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new
快速了解MongoDB【基本概念与体系结构】
什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
windows系统安装MongoDB
安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我
Spring boot整合MyBatis-Plus 之二:增删改查
基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baom
分布式ID生成器【snowflake雪花算法】
基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案