- 浏览: 697711 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
本文详细介绍bboss标签库特有表达式的使用方法。可以在分页/列表/详细信息标签及相关标签中使用表达式。
1 概述
表达式支持的基本操作有:乘法,除法,求余,加/减,字符串的加操作
操作数:可以为变量,整数,小数,字符串
其中变量是指列表/分页/页面详细信息中的对象属性名称,为如下形式:
{variable name}
表达式中用"{"和"}"来标识变量
在表达式中需要属性的值时必须通过变量的方式来获取
变量名称有三种形式,每种形式有不同的含义:
简单变量 -- 及为当前列表中基本属性,例如 name
二重变量 -- 及为当前列表中属性对应对象中的属性,例如 user.name
带索引的变量-- 如果列表或者分页或者详细信息标签的使用出现嵌套的情况时通过在变量中使用索引来求外层列表中的对象属性的值,
索引必须设置在变量名称的最前面并且为数字,以‘.’号与变量名称隔开,
例如 1.name或者1.user.name表示第二层嵌套中的属性(外层嵌套的编号从最外层开始,最外层也就是第一层的编号为0,第二层为1。。。)
聚合操作也是针对变量(属性)而设计
例如:
2 * 2
2 + 2 * 3
2 - 2 / 3
2 - 3 % 2
2* {var1} / {var2}
上述操作可以任意组合
对应的cell标签属性名称为expression,属性值可以为一个表达式,也可以为一个字符串或者一个数,例如:
数:整数123,或者小数21342.234234
字符串:"\"测试\""
表达式:{属性1} + {属性}
对应的逻辑标签有两个属性:expression和expressionValue,属性值同cell标签expression属性值
2 保留变量
整个标签库为表达式预留了以下变量:
rowid:可以在表达式中获取当前记录集的行号,带页面偏移量,前面可带外面集合的索引号,索引号从最外层集合以0开始,依次加1
offset:在表达式中获取当前页面记录的起始位置,分页时有用
rowcount :保存总记录数
pagesize:保存当页获取到的实际纪录数
mapkey: 保存map迭代当前的key值
currentcell:保存list/array循环中当前的值
例如:
<pg:equal value=”1” expression=”{rowid}%5”>//当行号rowid模5求余为1时执行等于标签中的值
Output something.
</pg:equal>
3 实例
3.1 通过计算表达式的值确定cell标签的输出值,例如:
情况1 表达式中只有数字(整数和小数都可以,如果全是整数那么输出的结果是一个整数,如果出现小数那么输出的结果将是小数)
只有整数<pg:cell expression="1 + 2 + (123 * 12)/2*(12-3)"/>表达式计算的值作为cell标签的输出,可以通过numerformat属性对输出的数字进行格式化
有小数 <pg:cell expression="1 + 2.2 + (123 * 1.2)/2*(12-3.2)"/>表达式计算的值作为cell标签的输出,可以通过numerformat属性对输出的数字进行格式化
情况2 表达式中有字符串,那么表达式将会把操作数全部当作字符串来处理
<pg:cell expression="\"值:\" + {属性}"/>,标签库首先会求当前列表中属性值,然后将属性值和前面的提示信息一起输出
与前面的提示信息一起输出
情况3 表达式中有属性:
<pg:cell expression="{属性1} + {属性2} + (123 * 12)/2*(12-{属性3})"/>
标签库在解析表达式的时候会获取表达式中出现的变量(及属性)的值,然后再求整个表达式的值。
比如"{属性1} + {属性2} + (123 * 12)/2*(12-{属性3})", 首先求出属性1、属性2
属性3的值,如果求出的值分别为4,5,6,那么表达式就会变成:
4 + 5 + (123 * 12)/2*(12-6),最终计算的结果将会作为cell标签的输出
3.2 逻辑标签可以指定表达式来确定实际值(expression属性)和期望值(expressionValue属性),或者是确定其中的一个,表达式的求值过程和cell标签中表达式求值过程一致,下面以equal标签来举几个例子,其它的逻辑标签都是一样的
情况1 比较两个属性的值
<pg:equal colName="attr1" expressionValue="{attr2}"/>
或者
<pg:equal expression="{attr1}" expressionValue="{attr2}"/>这两种方式是等价的
如果有嵌套:
<pg:equal colName="attr1" expressionValue="{0.attr2}"/>
或者
<pg:equal expression="{attr1}" expressionValue="{0.attr2}"/>这两种方式是等价的
或者
<pg:equal expression="{0.attr1}" expressionValue="{0.attr2}"/>这两种方式是等价的
情况2
<pg:equal colName="attr1" expressionValue="1+2+{attr2}"/>
或者
<pg:equal expression="{attr1}" expressionValue="1+2+{0.attr2}"/>这两种方式是等价的
或者
<pg:equal expression="{0.attr1}" expressionValue="1+2+{0.attr2}"/>这两种方式是等价的
其它逻辑标签雷同
3.3 逻辑标签in,notin使用说明、实例
逻辑标签in功能说明:判断计算属性或者expression属性对应的表达式得到值是否包含
在scope属性或表达式对应的值范围之内,值范围以逗号分隔,如果包含则执行in标签体对应的代码,否则不执行。
逻辑标签notin功能说明:判断计算属性或者expression属性对应的表达式得到值是否包含
在scope属性或表达式对应的值范围之内,值范围以逗号分隔,如果不包含则执行notin标签体对应的代码,否则不执行。
<pg:in expression="{aaa}" scope="1,2,3,4,5">ddddd</pg:in>
<pg:notin expression="{aaa}" scope="1,2,3,4,5">ddddd</pg:notin>
<pg:in colName="aaa" scope="1,2,3,4,5">ddddd</pg:in>
<pg:notin colName="aaa" scope="1,2,3,4,5">ddddd</pg:notin>
<pg:in expression="{aaa}" scope="{scopevaribale}">ddddd</pg:in>
<pg:notin expression="{aaa}" scope="{scopevaribale}">ddddd</pg:notin>
3.4关于表达式的改进:
expression,expressionValue可以用来指定表达式,并对表达式求值,之前不能指定常量,现在可以了举例如下:
并且增加了表达式内置变量rowid,offset,这两个变量可以直接再表达式中使用,rowid存放当前记录的行号,offset存放当前页面的起始地址
<pg:equal expression="{rowid}" expressionValue="1">
啊啊啊啊
</pg:equal>
3.5 增加contain和match两个对属性值和表达式值进行正则表达式匹配的标签,要匹配的模式通过pattern属性来指定。
使用实例:
<pg:contain expression="{aaa}" pattern="[1-2]+">ddddd</pg:contain>
<pg:match expression="{aaa}" pattern="[1-2]+">ddddd</pg:match>
<pg:contain colName="aaa" pattern="[1-2]+">ddddd</pg:contain>
<pg:match colName="aaa" pattern="[1-2]+">ddddd</pg:match>
3.6 表达式中对变量求长度方法
表达式中对变量求长度方法,如果变量是一个容器集合对象或者数组对象或者字符串,想在表达式中获取其长度,只需要在变量名称前面加size:前缀即可。
使用实例:
<pg:equal expression="{size:aaa}" value="10">ddddd</pg:equal>
<pg:equal expression="{size:aaa}" expressionValue="{size:bbb}">ddddd</pg:equal>
更多的标签属性可以参考标签定义tld文件:pager-taglib.tld
1 概述
表达式支持的基本操作有:乘法,除法,求余,加/减,字符串的加操作
操作数:可以为变量,整数,小数,字符串
其中变量是指列表/分页/页面详细信息中的对象属性名称,为如下形式:
{variable name}
表达式中用"{"和"}"来标识变量
在表达式中需要属性的值时必须通过变量的方式来获取
变量名称有三种形式,每种形式有不同的含义:
简单变量 -- 及为当前列表中基本属性,例如 name
二重变量 -- 及为当前列表中属性对应对象中的属性,例如 user.name
带索引的变量-- 如果列表或者分页或者详细信息标签的使用出现嵌套的情况时通过在变量中使用索引来求外层列表中的对象属性的值,
索引必须设置在变量名称的最前面并且为数字,以‘.’号与变量名称隔开,
例如 1.name或者1.user.name表示第二层嵌套中的属性(外层嵌套的编号从最外层开始,最外层也就是第一层的编号为0,第二层为1。。。)
聚合操作也是针对变量(属性)而设计
例如:
2 * 2
2 + 2 * 3
2 - 2 / 3
2 - 3 % 2
2* {var1} / {var2}
上述操作可以任意组合
对应的cell标签属性名称为expression,属性值可以为一个表达式,也可以为一个字符串或者一个数,例如:
数:整数123,或者小数21342.234234
字符串:"\"测试\""
表达式:{属性1} + {属性}
对应的逻辑标签有两个属性:expression和expressionValue,属性值同cell标签expression属性值
2 保留变量
整个标签库为表达式预留了以下变量:
rowid:可以在表达式中获取当前记录集的行号,带页面偏移量,前面可带外面集合的索引号,索引号从最外层集合以0开始,依次加1
offset:在表达式中获取当前页面记录的起始位置,分页时有用
rowcount :保存总记录数
pagesize:保存当页获取到的实际纪录数
mapkey: 保存map迭代当前的key值
currentcell:保存list/array循环中当前的值
例如:
<pg:equal value=”1” expression=”{rowid}%5”>//当行号rowid模5求余为1时执行等于标签中的值
Output something.
</pg:equal>
3 实例
3.1 通过计算表达式的值确定cell标签的输出值,例如:
情况1 表达式中只有数字(整数和小数都可以,如果全是整数那么输出的结果是一个整数,如果出现小数那么输出的结果将是小数)
只有整数<pg:cell expression="1 + 2 + (123 * 12)/2*(12-3)"/>表达式计算的值作为cell标签的输出,可以通过numerformat属性对输出的数字进行格式化
有小数 <pg:cell expression="1 + 2.2 + (123 * 1.2)/2*(12-3.2)"/>表达式计算的值作为cell标签的输出,可以通过numerformat属性对输出的数字进行格式化
情况2 表达式中有字符串,那么表达式将会把操作数全部当作字符串来处理
<pg:cell expression="\"值:\" + {属性}"/>,标签库首先会求当前列表中属性值,然后将属性值和前面的提示信息一起输出
与前面的提示信息一起输出
情况3 表达式中有属性:
<pg:cell expression="{属性1} + {属性2} + (123 * 12)/2*(12-{属性3})"/>
标签库在解析表达式的时候会获取表达式中出现的变量(及属性)的值,然后再求整个表达式的值。
比如"{属性1} + {属性2} + (123 * 12)/2*(12-{属性3})", 首先求出属性1、属性2
属性3的值,如果求出的值分别为4,5,6,那么表达式就会变成:
4 + 5 + (123 * 12)/2*(12-6),最终计算的结果将会作为cell标签的输出
3.2 逻辑标签可以指定表达式来确定实际值(expression属性)和期望值(expressionValue属性),或者是确定其中的一个,表达式的求值过程和cell标签中表达式求值过程一致,下面以equal标签来举几个例子,其它的逻辑标签都是一样的
情况1 比较两个属性的值
<pg:equal colName="attr1" expressionValue="{attr2}"/>
或者
<pg:equal expression="{attr1}" expressionValue="{attr2}"/>这两种方式是等价的
如果有嵌套:
<pg:equal colName="attr1" expressionValue="{0.attr2}"/>
或者
<pg:equal expression="{attr1}" expressionValue="{0.attr2}"/>这两种方式是等价的
或者
<pg:equal expression="{0.attr1}" expressionValue="{0.attr2}"/>这两种方式是等价的
情况2
<pg:equal colName="attr1" expressionValue="1+2+{attr2}"/>
或者
<pg:equal expression="{attr1}" expressionValue="1+2+{0.attr2}"/>这两种方式是等价的
或者
<pg:equal expression="{0.attr1}" expressionValue="1+2+{0.attr2}"/>这两种方式是等价的
其它逻辑标签雷同
3.3 逻辑标签in,notin使用说明、实例
逻辑标签in功能说明:判断计算属性或者expression属性对应的表达式得到值是否包含
在scope属性或表达式对应的值范围之内,值范围以逗号分隔,如果包含则执行in标签体对应的代码,否则不执行。
逻辑标签notin功能说明:判断计算属性或者expression属性对应的表达式得到值是否包含
在scope属性或表达式对应的值范围之内,值范围以逗号分隔,如果不包含则执行notin标签体对应的代码,否则不执行。
<pg:in expression="{aaa}" scope="1,2,3,4,5">ddddd</pg:in>
<pg:notin expression="{aaa}" scope="1,2,3,4,5">ddddd</pg:notin>
<pg:in colName="aaa" scope="1,2,3,4,5">ddddd</pg:in>
<pg:notin colName="aaa" scope="1,2,3,4,5">ddddd</pg:notin>
<pg:in expression="{aaa}" scope="{scopevaribale}">ddddd</pg:in>
<pg:notin expression="{aaa}" scope="{scopevaribale}">ddddd</pg:notin>
3.4关于表达式的改进:
expression,expressionValue可以用来指定表达式,并对表达式求值,之前不能指定常量,现在可以了举例如下:
并且增加了表达式内置变量rowid,offset,这两个变量可以直接再表达式中使用,rowid存放当前记录的行号,offset存放当前页面的起始地址
<pg:equal expression="{rowid}" expressionValue="1">
啊啊啊啊
</pg:equal>
3.5 增加contain和match两个对属性值和表达式值进行正则表达式匹配的标签,要匹配的模式通过pattern属性来指定。
使用实例:
<pg:contain expression="{aaa}" pattern="[1-2]+">ddddd</pg:contain>
<pg:match expression="{aaa}" pattern="[1-2]+">ddddd</pg:match>
<pg:contain colName="aaa" pattern="[1-2]+">ddddd</pg:contain>
<pg:match colName="aaa" pattern="[1-2]+">ddddd</pg:match>
3.6 表达式中对变量求长度方法
表达式中对变量求长度方法,如果变量是一个容器集合对象或者数组对象或者字符串,想在表达式中获取其长度,只需要在变量名称前面加size:前缀即可。
使用实例:
<pg:equal expression="{size:aaa}" value="10">ddddd</pg:equal>
<pg:equal expression="{size:aaa}" expressionValue="{size:bbb}">ddddd</pg:equal>
更多的标签属性可以参考标签定义tld文件:pager-taglib.tld
发表评论
-
bboss标签库cell标签格式化数字实例
2016-11-24 10:38 926bboss标签库cell标签格式化数字实例 带double类 ... -
bboss标签库cell标签展示嵌套对象属性方法实例
2016-11-16 21:47 964bboss标签库cell标签展示 ... -
bboss标签库list/map标签循环变量var属性使用说明
2015-12-24 09:17 1381bboss标签库list/map标签循环变量var属性使用说明 ... -
bboss逻辑标签实现if-else以及if-else if-else条件判断功能介绍
2014-11-25 23:43 1796采用bboss逻辑标签可以非常容易地实现if-else以及if ... -
bboss标签实现列表中的动态列数据展示方法
2014-10-26 12:46 1320借助bboss标签库提供的list标签,我们可以非常方便地实现 ... -
bboss逻辑标签判断对象类型是否为给定的Class类型方法
2014-10-12 11:35 889在java代码中可以非常方 ... -
bboss数据库标签系列一 分页列表详细信息标签预编译sql查询数据
2014-10-09 12:54 1129本系列文章详细介绍bboss标签库的数据库标签具体使用方法,涉 ... -
扩展bboss标签库编写自己的标签
2014-09-25 22:17 1025扩展bboss标签库编写自己的标签。 实际使用bboss标签库 ... -
bbossgroups标签库使用大全(续三)-新增功能特性详解
2014-03-23 10:58 1007bbossgroups标签库使用大全(续三)-bboss最近新 ... -
bboss分页组件翻页js前置处理函数和js后置处理函数使用方法
2014-01-16 10:30 1222bboss 3.7.7版本及后续版本为分页组件增加翻页js前置 ... -
bboss持久层More分页查询API使用介绍
2013-10-18 16:17 1486为了更好地提高数据库分页查询的效率,bboss持久层在Conf ... -
bboss标签库与jstl标签库功能对比
2013-09-15 22:53 1157本文就bboss标签库与jstl标签库中的几个常用标签做个简单 ... -
bbossgroups标签使用大全(续一)-安全篇
2013-09-01 15:08 1151本文是bboss 标签库系列 ... -
bboss中的map标签结合list标签/cell标签展示复杂数据结构案例
2012-08-31 12:12 1805bboss中的map标签结合list ... -
bboss标签库使用大全-逻辑标签使用介绍
2011-08-01 21:58 2713bbossgroups标签库使用大全(续),接上篇《bboss ... -
bboss标签使用大全-数据展示标签
2011-07-31 23:28 4331bboss标签库使用大全 本文介绍bboss中所有数据展示标 ... -
bboss特色介绍
2011-06-12 15:43 18959bboss是一个j2ee开 ... -
采用jquery来分页,排序,查询
2010-04-13 21:19 1453页面标签全面采用jquery来分页,排序,查询 又花了 ... -
树标签的脚本从prototype迁移到jquery实战
2010-04-12 19:31 1010花了一天的时间将树标签的脚本全部从prototype迁移到jq ... -
关于树标签的问题1-动静模式是,点击下级节点不能展开的问题
2010-03-05 09:02 1031关于树标签的问题-动静模式是,点击下级节点不能展开的问题 b ...
相关推荐
首先,导入了必要的库,包括`java.sql.SQLException`,`java.util.List`,以及bbossgroups的相关包。`SQLExecutor`是主要的操作接口,而`NullRowHandler`和`RowHandler`则用于处理查询结果。 在`SimpleApiTest`类中...
近日,bbossgroups 3.0 正式发布,这款国内首款集AOP(面向切面编程)、MVC(模型-视图-控制器)、Persistent(持久化)、JSP Taglib(JSP 标签库)、分布式RPC服务及分布式事件框架于一体的J2EE开发框架,为开发者...
bbossgroups是一个开源的企业级Java应用框架,旨在简化企业级开发,提高开发效率。本文将深入讲解bbossgroups开发系列文章之一中的最佳实践,涉及bboss MVC框架的基础配置、控制器、数据库访问、DAO组件、业务组件...
4. **Taglib**:标签库,与jQuery等前端技术结合,提供了丰富的界面标签。 5. **Event**:分布式事件框架,支持同步和异步事件处理。 6. **Ant自动构建**:辅助开发和构建工程,生成jar包。 7. **文档**:详尽的组件...
本文将深入探讨Bbossgroups的体系架构,包括AOP内核、MVC框架、标签库、国际化、主题管理、RESTful架构、持久层框架、分布式事件框架、任务调度、服务发布与访问、安全管理等多个方面。 1. **AOP内核**:AOP(面向...
1. **模块化设计**:bbossgroups 3.0 采用模块化设计,使得各个组件可以独立使用,增强了代码的复用性和可维护性。开发者可以根据项目需求选择相应的模块,降低系统的复杂度。 2. **高性能的消息队列**:...
弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的elasticsearch来关联数据库。环境要求JDK要求:JDK 1.7+ Elasticsearch版本要求:1.X,2.X,5...
12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...
java版地图源码弹性搜索Bboss Bboss 是一个很好的 elasticsearch ...如何使用 Elasticsearch BBoss。 首先将BBoss的maven依赖添加到你的pom.xml中: < dependency > < groupId >com.bbossgroups.p
提供的压缩包文件"bbossgroups 框架培训教程.pptx"和"Bbossgroups演示文档.pptx"可能包含了更多关于bboss mvc框架的详细信息和使用示例,包括如何配置和使用JSONP等特性。建议查阅这些文档以获取更深入的理解。 总...
BBoss框架的最新版本bbossgroups-bboss-389b83a可能包含了对原有功能的优化、新特性的添加以及bug修复。开发者在使用时,应详细阅读官方文档,了解其具体变更,以便更好地利用这一强大的工具进行企业级应用的开发。 ...
该框架包含222个文件,包括164个Java源文件、14个XML配置文件、6个Gradle构建文件、6个JAR包文件、6个属性文件等,旨在支持跨域应用集群节点的会话共享与监控,并提供示例站点http://session.bbossgroups.com/...