bboss oreach循环嵌套遍历map
foreach循环嵌套遍历map
foreach嵌套dsl脚本定义
<property name="dynamicInnerDsl">
<![CDATA[{ ## 最多返回1000条记录
size: #[size],
"query": {
"bool": {
"must": [
#set($needComma = false)
#foreach($condition in $conditions.entrySet())
#foreach($item in $condition.value.entrySet())
#if($needComma), #else #set($needComma = true) #end
{
"$condition.key": {
"$item.key": #[conditions[$condition.key][$item.key],serialJson=true]
}
}
#end
#end
]
}
}
}]]>
</property>
传递参数和解析上述dsl的java方法代码
@Test
public void dynamicInnerDsl(){
Map conditions = new HashMap<String,Map<String,Object>>();
Map<String,Object> term = new HashMap<String, Object>();
term.put("terma","tavalue");
term.put("termb","tbvalue");
term.put("termc","tcvalue");
conditions.put("term",term);
Map params = new HashMap();
params.put("conditions",conditions);
params.put("size",1000);
//加载配置文件中的dsl信息,解析dsl语句dynamicInnerDsl
ESUtil esUtil = ESUtil.getInstance("esmapper/dsl.xml");
String parseResult = ESTemplateHelper.evalTemplate(esUtil,"dynamicInnerDsl",params);
//打印解析结果
System.out.println(parseResult);
}
运行上述代码打印出来的实际dsl
{
"size": 1000,
"query": {
"bool": {
"must": [
{
"term": {
"termb": "tbvalue"
}
},
{
"term": {
"termc": "tcvalue"
}
},
{
"term": {
"terma": "tavalue"
}
}
]
}
}
}
bboss oreach循环嵌套遍历map的更多相关文章
- 【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空
今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看. 如下代码,期望的结果是每次从外循环进入内循环,map都从头开 ...
- 【freemaker】之文本,html文本,去除空格,字母大小写,循环数组,字符串截取,map取值,遍历map
测试代码 @Test public void test06(){ try { root.put("emp", "<span color='red'>你好张三& ...
- 嵌套遍历<s:iterator>map=new TreeMap(string,Map(string,User))
//嵌套遍历,先给外层的map(假设是放在root中的,如果放在context的map中,要加#)取个别名,放到Actioncontext中 <s:iterator value="ma ...
- java中遍历MAP,嵌套map的几种方法
java中遍历MAP的几种方法 Map<String,String> map=new HashMap<String,String>(); map.put("us ...
- python利用for..in遍历,while循环嵌套编译九九乘法表的几种模式
运用for....in...遍历的四种方向的九九乘法表: 左下角: import sysfor i in range(1,10): for j in range(1,i+1): sys.stdout. ...
- JS中的for....in循环 和 for ...of循环以及iterable遍历Map和Set
for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来: var o = { name: 'Jack', age: 20, city: 'Beijing' }; for ...
- js中数组的循环与遍历forEach,map
对于前端的循环遍历我们知道有 针对js数组的forEach().map().filter().reduce()方法 针对js对象的for/in语句(for/in也能遍历数组,但不推荐) 针对jq数组/ ...
- Map 嵌套存储Map
import java.util.HashMap;import java.util.Iterator;import java.util.Set;import java.util.Map.Entry; ...
- 遍历map的四种方法
方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用.注意:for-each循环在Java 5中被引入所以该方法只能应用于j ...
随机推荐
- 最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面 ...
- C# 《编写高质量代码改善建议》整理&笔记 --(四)资源管理&序列化
1.显示释放资源需继承接口IDisposable 什么是资源:C#中每一个类型都代表一种资源,而资源又分为以下两类. 托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象. 非托管资源 ...
- java~mac下的终端工具oh-my-zsh
mac操作系统类似于linux,很多命令都是兼容的,确实挺好用,对于java,docker,git等开发来说,终端命令行是非常必要的工具,这里我介绍一下item2+oh-my-zsh的安装与使用. 安 ...
- Abp中使用可视化的日志面板
Abp中使用可视化的日志面板 如果你还不了解LogDashboard请看这里. ABP的相关知识不做介绍如果有需要请阅读ABP官方文档 ABP是Net下非常优秀的开发框架,在中国很多的项目都正在使用它 ...
- Asp.Net Core 轻松学-HttpClient的演进和避坑
前言 在 Asp.Net Core 1.0 时代,由于设计上的问题, HttpClient 给开发者带来了无尽的困扰,用 Asp.Net Core 开发团队的话来说就是:我们注意到,HttpC ...
- JDK源码分析(2)之 Array 相关
在深入了解 Array 之前,一直以为 Array 比较简单,但是深入了解后才发现其实挺复杂的.所以我把重要的写在最前面,但凡遇到和语言本身相关的问题,都可以查阅 Java Language and ...
- 为什么使用 Redis 及其产品定位
一:传统 MySQL+ Memcached 架构遇到的问题 实际 MySQL 是适合进行海量数据存储的,通过 Memcached 将热点数据加载到 cache,加速访问,很多公司都曾经使用过这样的架构 ...
- 用bat批处理程序通过DOS命令行删除所有的空文件夹
用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我 ...
- C#/VB.NET设置Excel表格背景色
在查看很多有复杂的数据的表格时,为了能够快速地找到所需要的数据组时,往往需要对该数据组进行分类,一个简单快速的方法就是对数据组所在的单元格填充背景颜色,这样就使得我们在阅读文件时能够直观的看到数据分类 ...
- setTimeout与setInterval的区别浅析
在网页制作动态效果时,一定会遇到某些需求,要求某段程序等待多时时间后再开始执行,就像在我们的生活中一样,待会儿再开始做一件事.在JavaScript中主要通过定时器实现此类需求,本文将对定时器做一个概 ...