`

bbossgroups标签库使用大全(续二)-表达式使用

阅读更多
本文详细介绍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
分享到:
评论

相关推荐

    bbossgroups 3.1SQLExecutor组件ap使用实例

    首先,导入了必要的库,包括`java.sql.SQLException`,`java.util.List`,以及bbossgroups的相关包。`SQLExecutor`是主要的操作接口,而`NullRowHandler`和`RowHandler`则用于处理查询结果。 在`SimpleApiTest`类中...

    bbossgroups 3.0 发布,国内首款集

    近日,bbossgroups 3.0 正式发布,这款国内首款集AOP(面向切面编程)、MVC(模型-视图-控制器)、Persistent(持久化)、JSP Taglib(JSP 标签库)、分布式RPC服务及分布式事件框架于一体的J2EE开发框架,为开发者...

    bbossgroups 开发系列文章之一 最佳实践

    bbossgroups是一个开源的企业级Java应用框架,旨在简化企业级开发,提高开发效率。本文将深入讲解bbossgroups开发系列文章之一中的最佳实践,涉及bboss MVC框架的基础配置、控制器、数据库访问、DAO组件、业务组件...

    bbossgroups 3.1培训教程.ppt

    4. **Taglib**:标签库,与jQuery等前端技术结合,提供了丰富的界面标签。 5. **Event**:分布式事件框架,支持同步和异步事件处理。 6. **Ant自动构建**:辅助开发和构建工程,生成jar包。 7. **文档**:详尽的组件...

    Bbossgroups体系架构.ppt

    本文将深入探讨Bbossgroups的体系架构,包括AOP内核、MVC框架、标签库、国际化、主题管理、RESTful架构、持久层框架、分布式事件框架、任务调度、服务发布与访问、安全管理等多个方面。 1. **AOP内核**:AOP(面向...

    bbossgroups 3.0 培训教程

    1. **模块化设计**:bbossgroups 3.0 采用模块化设计,使得各个组件可以独立使用,增强了代码的复用性和可维护性。开发者可以根据项目需求选择相应的模块,降低系统的复杂度。 2. **高性能的消息队列**:...

    bboss-elastic-tran:bboss 数据同步工具

    弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的elasticsearch来关联数据库。环境要求JDK要求:JDK 1.7+ Elasticsearch版本要求:1.X,2.X,5...

    2013年度中国优秀开源项目列表

    12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...

    java版地图源码-bboss-elasticsearch:最好的elasticsearch高级javarest客户端api-----bbos

    java版地图源码弹性搜索Bboss Bboss 是一个很好的 elasticsearch ...如何使用 Elasticsearch BBoss。 首先将BBoss的maven依赖添加到你的pom.xml中: &lt; dependency &gt; &lt; groupId &gt;com.bbossgroups.p

    bboss mvc 通过jsonp实现跨站跨域远程访问

    提供的压缩包文件"bbossgroups 框架培训教程.pptx"和"Bbossgroups演示文档.pptx"可能包含了更多关于bboss mvc框架的详细信息和使用示例,包括如何配置和使用JSONP等特性。建议查阅这些文档以获取更深入的理解。 总...

    企业级J2EE开源框架bboss

    BBoss框架的最新版本bbossgroups-bboss-389b83a可能包含了对原有功能的优化、新特性的添加以及bug修复。开发者在使用时,应详细阅读官方文档,了解其具体变更,以便更好地利用这一强大的工具进行企业级应用的开发。 ...

    基于Java和Shell的bboss session framework跨域集群节点会话共享与监控设计源码

    该框架包含222个文件,包括164个Java源文件、14个XML配置文件、6个Gradle构建文件、6个JAR包文件、6个属性文件等,旨在支持跨域应用集群节点的会话共享与监控,并提供示例站点http://session.bbossgroups.com/...

Global site tag (gtag.js) - Google Analytics