-
AOL/AOI
AOL:anyline office tag library+ Expression Language
AOV:anyline office 内置变量
AOI:anyline office 外部接口应用场景:在word中经常用来生成动态表格,如表头、数据、行、列都是动态生成的。这时就不是一个简单的占位符替换可以实现的,而是需要aol标签实现,类似于JSTL标签+EL表达式
标签格式类似于(以下代码是写在word中而不是xml源码中)
但这个模板通常是运行时用户来设置,也就是说编码阶段并不知道模板内容,更不知道模板中有什么占位符以及模板结构。
大部分情况可以通过AOL + AOV实现
极个别非常复杂的内容可以通过AOI调用外部接口实现
<aol:for data="${smaples}" item="samp" begin="0" end = "21" vol="3" dir="v" scope="body" compensate="/,-">${samp.CODE}</al:for>
还有些情况需要格式化,如日期,数字,人民币金额等
<aol:date value="${row.REG_TIME}" format="yyyy-MM-dd"/> 这里是取row对象(或map)的REG_TIME属性值
<aol:img src="${row.IMG_URL}" style="width:100px;height:50px;"/>
以及其他一切不能简单输出toString()的格式
因为是写在word中,无法操作 XML标签,所以只能写在单元格内 通过scope来区分标签体是否包含当前单元格参考【aol:for】
因为是写在word中,标签太长会导致表格变形,所以需要压缩一下,如压缩成<aol:date ref="a1"/>a1定义参考【预定义变量或标签】
属性支持String类型的json格式如user.dept="{id:1}" 可以通过${user.dept.id}输出
支持下标${users[0].id}支持集合与map的长度${users.size}是否为空${users.empty} 以及一些【内置占位符常量】
为了进一步压缩标签长度,属性支持缩写,如data="a" 缩写成d="a"参考【属性缩写】应用时特别注意,代码一般不要让用户自己去写,应该提供一个编辑工具生成
-
aol:img 图片
aol:img src=”${FILE_URL_COL}” style=”width:150px;height:150px;” 也可以设置更多占位符 aol:img src=”${FILE_URL_COL}” style=”width:150px;height:${LOGO_HEIGHT}px;” -
aol:date 日期格式化
aol:date format="yyyy-MM-dd HH:mm:ss" value="${create_time}" -
aol:number 数字格式化
format="###,##0.00" 格式化 value="${total}" 值 -
aol:if 判断
根据ognl表达式判断 -
aol:money 人民币大写
人民币大写 -
aol:checkbox 模拟复选框
data:先项集合 valuekey:用于判断选中状态的属性 textKey:选项显示文本的属性 vol:每行显示几个选项 rely:根据value集合中的对象的rely属性判断是否选中 split:选项之间的分隔符 value:选中项的值或对象集合,如果是集合需要根据rely取值 type="text" 只显示选中项文本值,不显示选中框 -
aol:for 遍历
在遇到遍历单元格时for的格式比普通的标签要复杂 与普通标签不同的是,有可能需要控制的是外层tc,tr并且可能是连续的多个 因为tc,tr的外层在word中接触不到所以当前标签只能写在td中 通过scope属性指定 td或tc, tr,默认body即for标签体 先看普通的遍历与JSTL类似 &l -
集合属性
${list.size} ${list[0].NAME} -
aol:avg/min/max 平均值最大最小值
平均值 property:计算属性 scale:小数位 * @param round 舍入模式 参考BigDecimal静态常量 * ROUND_UP = 0 舍入远离零的舍入模式 在丢弃非零 -
aol:pre 预定义标签
如果aol标签属性比较多,会造成在表格变形或强制断行。 为了保持排版清晰,可以使用aol:ref预定义标签,在需要输出的位置引用,可以在引用位置以比较短的格式排版。 预定义时统一使用aol:ref不需要限定标签类型如date,for等,只是预定义一些属性,在引用位置如果定义了相同的属性则覆