Freemarker中如何遍历List摘要:在Freemarker应用中经常会遍历List获取需要的数据,并对需要的数据进行排序加工后呈现给用户。那么在Freemarker中如何遍历List,并对List中数据进行适当的排序呢?
通过下文的介绍,相信您一定会找到答案。
一、 Freemarker中list指令简单介绍
要想在Freemarker中遍历list,必须通过使用list指令,即<#list sequence as item>…</#list>
sequence是集合(collection)的表达式,item是循环变量的名字,不能是表达式。
当在遍历sequence时,会将遍历变量的值保存到item中。
举个例子说明吧:
<#list userList as user>
…
</#list>
userList中封装了很多个User对象,我们在遍历userList时候,会将遍历的User对象的值,保存到上述的user变量中。那么在取值时,我们可以通过${user.userName }来获取User对象的userName属性值。
List指令还隐含了两个循环变量:
item_index:当前迭代项在所有迭代项中的位置,是数字值。
item_has_next:用于判断当前迭代项是否是所有迭代项中的最后一项。
注意:在使用上述两个循环变量时,一定要将item换成你自己定义的循环变量名,item其实就是前缀罢了。
例如,如果你使用<# list list as l>..</#list>定义,那么就要使用l_index,l_has_next。
在循环过程中,如果您想跳出循环,那么可以使用结合break指令,即<#break>来完成。
二、 Freemarker中对List进行排序
通常我们的排序操作都是通过DAO层来实现的,如果我们想随时更改我们的排序,那么就必须修改我们的DAO层代码,确实不方便。但Freemarker为我们提供了这样的排序方法,解决了这个问题。
1. sort升序排序函数
sort对序列(sequence)进行排序,要求序列中的变量必须是:字符串(按首字母排序),数字,日期值。
<#list list?sort as l>…</#list>
2. sort_by函数
sort_by有一个参数,该参数用于指定想要排序的子变量,排序是按照变量对应的值进行排序,如:
<#list userList?sort_by(“age”) as user>…</#list>
age是User对象的属性,排序是按age的值进行的。
3. reverse降序排序函数
<#list list? reverse as l>…</#list>
reverse使用同sort相同。reverse还可以同sort_by一起使用
如:想让用户按年龄降序排序,那么可以这个样写<#list userList?sort_by(“age”)?reverse as user>…</#list>
三、split(“XX”):截取XX之后的字符
<#list "someMOOtestMOOtext"?split("MOO") as x>
- ${x}
</#list>
输出:
- some
- test
- text
四、定义变量,结合if else
<#assign optype ="${product.optype?if_exists}" >
<#if optype=="0" || optype=="">
<#assign btn_type="结算">
订购
<#elseif optype=="4" >
<#assign btn_type="结算">
退订
<#elseif optype=="1" >
<#assign btn_type="结算">
暂停
<#elseif optype=="3" >
<#assign btn_type="结算">
恢复
<#elseif optype=="2" >
<#assign btn_type="结算">
属性修改
</#if>
五、判断
<#if (productList ? exists) && (productList ? size > 0)>
六、设置模板的数据类型
<#setting number_format="0">
七、数据格式化带来的操作问题
freemarker在解析数据格式的时候,自动默认将数字按3为分割(1,000),这个问题给操作带来一定的额外处理复杂度,解决方法有如下几种:
1、在模板中直接加.toString()转化数字为字符串,如:${languageList.id.toString()};
2、在freemarker配置文件freemarker.properties加<#setting number_format="#">或者 <#setting number_format="0">;
3、在模板中直接加<#setting number_format="#">或者<#setting number_format="0">,如:<#if AdminLanguagePaginationMsg?exists>
<#setting number_format="#">
4、加?c,如${a.sid?c},${aa?c}作用把String转换为数字,因为freemarker默认的会采用科学计数法,比如1,000,000
八、freemaker整数变小数
将${a.currentPrice/100} 改为#{a.currentPrice/100; m1},急把前面的转换成小数,Mx最大多少小数位,mx最低小数位。
分享到:
相关推荐
- **必要的XML处理**: 提供了一些实用的例子,演示了如何利用FreeMarker进行常见的XML处理任务。 - **声明的XML处理**: 更深入地探讨了如何声明式地处理XML文档,包括使用模板语言中的特定指令。 #### 八、参考文档...
这是模板中最常见的操作之一。 #### 五、高级特性 1. **自定义指令**:允许开发者定义自己的指令,这为模板提供了极大的扩展能力。 2. **命名空间**:通过使用命名空间可以避免指令名冲突,并且可以使模板更加...
**实用J2EE设计模式编程指南** 在Java企业级应用开发中,J2EE(Java 2 Platform, Enterprise Edition)是一套广泛采用的标准,它提供了一整套服务和框架,用于构建可扩展、高可用性和分布式的企业级应用程序。本...
《Struts2权威指南》是一本深入探讨Struts2框架的专著,旨在为开发者提供真实、全面且实用的指导。Struts2是Java企业级应用中广泛使用的MVC(Model-View-Controller)框架,它基于WebWork的核心技术,为开发者提供了...
《Jeecms开发指南》V1.0详细解读 Jeecms是一款基于JavaEE平台的开源内容管理系统,致力于填补国内JavaEE技术在CMS领域的空白。它利用Java的强大、稳定、安全和高效特性,为企业级应用提供了可靠的选择。与国外高昂...
总之,《Struts.2权威指南——基于WebWork核心的MVC开发》是一部内容丰富、实用性强的Web开发指南,无论是对于初学者还是有经验的开发者来说,都是学习和掌握Struts.2框架不可或缺的参考资料。通过阅读本书,读者...
它通过一系列的工具和服务来解决常见的开发问题,例如依赖注入(Dependency Injection, DI)、面向切面编程(Aspect-Oriented Programming, AOP)等。 - **设计理念**:Spring框架的核心理念之一是提倡“实用主义”...
JAVA PP持久层代码生成器是一种高效实用的开发工具,它主要针对JAVA的持久层代码进行自动化生成,大大减轻了开发者的手动编码工作量。这款工具基于FreeMarker模板引擎,允许用户根据自己的需求自定义模板,从而实现...
通常,这样的博客文章会包含实际操作步骤、注意事项和常见问题解答,对于初学者或者想要深入了解工具的人来说非常有帮助。 标签“源码”表明这个工具可能是开源的,允许用户查看和修改其内部实现,这对于开发者来说...
- "readme.htm":这是常见的文档文件,通常包含项目的基本信息、安装指南、使用说明等内容。在这个上下文中,readme文件可能会详细解释如何下载、解压、配置和运行这个后台模板,以及任何相关的依赖和注意事项。 - ...
《Struts2 In Action中文版》是一本全面、实用的指南,无论你是初学者还是有经验的开发者,都能从中受益,提升对Struts2框架的理解和应用能力。阅读并实践书中的内容,你将能够熟练地运用Struts2构建高效、稳定的...
文件"说明.htm"可能是框架的使用指南或者介绍文档,包含了详细的安装步骤、配置方法以及常见问题解答。而"active4j"目录下的文件则包含框架的核心源代码,开发者可以通过阅读源码来深入理解框架的工作原理,进行二次...
《SpringBoot开发实战》是一本深入浅出的指南,旨在帮助开发者快速掌握Spring Boot的核心概念和技术。Spring Boot是由Pivotal团队开发的框架,旨在简化Java应用的初始搭建以及开发过程,它通过“约定优于配置”的...
Jeefast是一个开源的Java快速开发框架,旨在提高开发效率并简化常见的开发任务。这个框架的设计理念是“简单、高效、实用”,它提供了一系列工具类和模块,帮助开发者快速构建企业级应用。从标题和描述来看,这个...
《实用Apache Struts2 Web 2.0项目》是一本深度探讨Struts2框架在Web 2.0应用中的实践指南。这本书旨在帮助开发者更好地理解和掌握如何利用Struts2框架构建高效、可扩展且易于维护的Web应用程序。Struts2是Apache...
4. **examples** 文件夹:可能包含了一系列示例应用,这些例子展示了Struts2框架的常见用法和配置,是初学者快速上手的实用资源。 5. **webapps** 文件夹:可能包含了预配置的Web应用程序实例,可以部署到Servlet...
【描述】"精品--毕业设计SpringBoot版" 提到了“精品”二字,意味着这可能是一个高质量的项目,包含了良好的代码结构、规范的编程实践和实用的功能。毕业设计通常要求学生综合运用所学知识,解决实际问题,因此这个...
视图方面,手册会涵盖JSP、FreeMarker和Velocity等常见的视图技术,以及如何使用Struts2的标签库来简化视图层的开发。Struts2的标签库提供了丰富的组件,如表单、链接、数据展示等,可以极大提升开发效率。 控制器...
8. **说明文档**:“说明文档.txt”可能包含系统的使用说明、安装步骤和常见问题解答,对于用户和维护者来说非常实用。 9. **配置文件**:“readme(重要).txt”通常包含了项目的启动指南、依赖环境和其他重要信息,...