velcoity使用说明:foreach指令
http://blog.csdn.net/madding/article/details/6641020当在velocity中需要显示一个列表信息,我们会用foreach循环输出,
要求:
假如现在需要在页面中输出单数的内容背景为红,双数的内容为黑,构造方式如下:
- package org.apache.velocity.test.issues;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.velocity.test.BaseTestCase;
- /**
- * 测试foreach
- * @author madding.lip at 2011.07.28
- */
- public class MaddingTestForeach extends BaseTestCase {
- public MaddingTestForeach(String name) {
- super(name);
- }
- public void test() {
- List<String> list = new ArrayList<String>();
- for(int i = 1; i <= 100; i++) {
- list.add(String.valueOf(i));
- }
- context.put("features", list);
- String template =
- "#foreach ($feature in $features)" +
- "#if($velocityCount%2 == 1)" +
- "<font color=\"red\">$feature</font>" +
- "#elseif($velocityCount%2 == 0)" +
- "<font color=\"black\">$feature</font>" +
- "#end" +
- "#if($velocityHasNext)" +
- "|" +
- "#end" +
- "#end";
- System.out.println(evaluate(template));
- }
- }
BaseTestCase是Velocity源代码中的测试类
说明:
1.#foreach是velocity指令,
2.velcotiyCount上, velocity foreach定义的一个变量,该变量主要用来记录当前的循环次数
3.velocityHasNext, velocity foreach定义的一个变量 ,表明该循环当前是否到尾部了
velocity.properties:
- # ----------------------------------------------------------------------------
- # F O R E A C H P R O P E R T I E S
- # ----------------------------------------------------------------------------
- # These properties control how the counter is accessed in the #foreach
- # directive. By default the reference $velocityCount and $velocityHasNext
- # will be available in the body of the #foreach directive.
- # The default starting value for $velocityCount is 1.
- # ----------------------------------------------------------------------------
- directive.foreach.counter.name = velocityCount
- directive.foreach.counter.initial.value = 1
- directive.foreach.maxloops = -1
- directive.foreach.iterator.name = velocityHasNext
实战记录
msgMap.put("insuranceCountList", insuranceCountList);
<?xml version="1.0" encoding="GBK"?>
<PACKET type="REQUEST" version="1.0"> #set($base="PlyMain")
#set($insured="Insured")
#set($contactInfo="ContactInfo") <HEAD>
<REQUEST_TYPE>$!{REQUEST_TYPE}</REQUEST_TYPE>
<USER>$!{USER}</USER>
<PASSWORD>$!{PASSWORD}</PASSWORD>
</HEAD>
<BODY>
<VOUCHER_FLAG>$!{app.getComponent($contactInfo).get(0).getCVoucherFlag()}</VOUCHER_FLAG>
<AA_INSURANCELIST>
## AA_INSURANCE信息
#foreach ($count in $AA_INSURANCECountList)
<AA_INSURANCE>
<NAME>$!{app.getComponent($insured).get($count).getCInsuredNme()}</NAME>
<DD_PLYNO>$!{app.getComponent($base).get($count).getCDD_PLYNO()}</DD_PLYNO>
</AA_INSURANCE>
#end
</AA_INSURANCELIST>
</BODY>
</PACKET>
velcoity使用说明:foreach指令的更多相关文章
- Velocity(7)——#foreach指令
首先是#foreach的简单示例: #foreach( $elem in $allElems) $elem</br> #end 上面这个例子中,$allElems可以是一个Vector,一 ...
- angularJS内置指令一览
基础ng指令 ng-href ng-src ng-disabled ng-readonly ng-checked ng-selected ng-class ng-style ng-show ng-hi ...
- CMake--常用指令
1 . ADD_DEFINITIONS 向 C/C++ 编译器添加 -D 定义,比如 在CMakeList.txt文件中添加: ADD_DEFINITIONS(-DENABLE_DEBUG -DABC ...
- cmake指令详解
所需文件名:CmakeLists.txt,在需要操作的每个目录下都需要 PROJECT(工程名字) 这条指令会自动创建两个变量: <projectname>_BINARY_DIR( ...
- 【PHP对XML文件的操作技术【完整版】】
无论是c/c++还是java.c#均有对XML文件操作的技术,PHP对XML文件的操作的技术主要有三种: DOM.XPath.SimpleXml. 一.DOM DOM:Document Object ...
- Velocity魔法堂系列二:VTL语法详解
一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...
- 《Velocity java开发指南》中文版(下)转载
文章出自:http://sakyone.iteye.com/blog/524292 8.Application Attributes Application Attributes (应用程序属性)是和 ...
- 《Velocity java开发指南》中文版(上)转载
文章引自:http://sakyone.iteye.com/blog/524289 1.开始入门 Velocity是一基于java语言的模板引擎,使用这个简单.功能强大的开发工具,可以很容易的将数据对 ...
- 深入浅出KnockoutJS
深入浅出KnockoutJS 写在前面,本文资料大多来源网上,属于自己的学习笔记整理. 其中主要内容来自learn.knockoutjs.com,源码解析部分资料来自司徒正美博文<knockou ...
随机推荐
- 【互动问答分享】第18期决胜云计算大数据时代Spark亚太研究院公益大讲堂
Q1:Master和Driver的是同一个东西吗? 两者不是同一个东西,在Standalone模式下Master是用于集群资源管理和调度的,而Driver适用于指挥Worker上的Executor通过 ...
- mongodb复制集搭建
注:mongodb当前版本是3.4.3 1.准备三个虚拟机做服务器 192.168.168.129:27017 192.168.168.130:27017 192.168.168.131:27017 ...
- 使用moneykey对APP进行健壮性测试
注意:moneykey对app按钮伪随机点击,只能测试app稳定性和健壮性,无法进行常规测试 1.安装 A.jdk(不详细介绍) B.安装配置android配置环境:Android Studio 此环 ...
- 线段树【p2706】贪婪大陆
Background 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败--人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海, 前方是变异了的超 ...
- LCA+差分【p4427】[BJOI2018]求和
Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的\(k\) 次方和,而且每次的\(k\) 可能是不同的.此处节点深度的 ...
- window下安装rsyncServer
window下安装rsyncServer---------------------------------1. 解压cwRsyncServer_4.0.5_Installer.zip,安装. 2. 复 ...
- 使用lookup-method解决singleton bean依赖prototype bean的问题
在Spring里面,当一个singleton bean依赖一个prototype bean,那么,因为singleton bean是单例的,因此prototype bean在singleton bea ...
- [BZOJ 1228] E&D
Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1228 Solution: 感觉自己对博弈论的理论一直了解得不够透彻 一篇讲原理的文章:S ...
- 【动态规划】bzoj1638 [Usaco2007 Mar]Cow Traffic 奶牛交通
设f[u]为从度数0到u的路径条数,f2[u]为从u到n的路径条数. ans=max{f[x[i]]*f2[y[i]]}(1<=i<=m). #include<cstdio> ...
- JavaScript对JSON数据进行排序
var ajson= { "result":[ { "cid":1, "name":"aaa", "price ...