概述

项目说明
功能

返回系统实时数据值。

例如:

您的用户名为 #currentUser.username#
  • 当admin登录时,显示为“您的用户名为 admin”
  • 当cat登录时,显示为“您的用户名为 cat”
快捷键
  • Ctrl-Shift-3
  • 光标放在任意开发可编辑的区域后使用以上快捷键,可调用所有Hash变量
  • 为防止出错,减少手工直接输入,推荐通过快捷调用后再修改变量值
适用范围

可在大部分开发配置中使用,包括(不限于)以下:

  • 表单设计
  • 列表设计
  • 用户界面设计
  • 流程活动名称
  • BeanShell/SQL/JS等脚本中
  • 部分插件配置项
允许嵌套

允许多次嵌套,被嵌套时统一使用"{}"替代"##"

例如:

#form.tableChild.field1[{form.tableParent.childId}]#
  • tableParent表中childId值作为tableChild表的主键,返回tableChild表中field1的值
转义

某些字符在脚本中可能会引发错误,因此在不同的脚本中使用Hash变量时需要使用转义防止脚本出错。

例如:在SQL中使用 #variable.remark#

UPDATE a SET c_remark='#variable.remark#'
  • 如果remark的值是
It's fine!
  • 这时SQL就会出错,因为里面包含了一个单引号,所以可以使用Hash变量的转义
#variable.remark?sql#
  • 即SQL调整为
UPDATE a SET c_remark='#variable.remark?sql#'

Hash变量支持以下几种转义:

  1. regex - Used to escape regular expression special characters
  2. json - Used to escape JSON special characters
  3. javascript - Used to escape Javascript special characters
  4. html - Used to escape HTML special characters
  5. xml - Used to escape XML special characters
  6. java - Used to escape Java special characters
  7. sql - Used to escape SQL special characters
  8. url - Used to escape URL special characters
  9. nl2br - Used to convert new line character to <br> HTML tag
  10. separator(SEPARATOR_CHARS) - Used to change the default separator ";" to the SEPARATOR_CHARS. eg. ?separator(, ) resulted "abc, def" instead of "abc;def".

其它示例

#envVariable.script?java#
#envVariable.script?nl2br;json#
#form.table.users?separator(, )#



分类

分类详情链接备注

流程任务

Workflow Assignment Hash Variable

获取任务ID,名称等

流程实例

Workflow Process Hash Variable

获取流程实例ID,流程名称,流程对应的表单记录ID值等

当前用户

Current User Hash Variable

获取当前用户的各类属性

当前日期

Date Hash Variable  

获取系统当期时间,可以在当前基础上加减

环境变量

Environment Variable Hash Variable  

获取环境变量值,环境变量中如果包含Hash变量也可以生效

表单数据值

Form Data Hash Variable  

如果对应的数据表就是当前提交的表单(相同线程)不用定义主键,否则必须用"[]"定义主键值。例如:

#form.tableName.fieldId [recordId]#

表单选项标签值

Form Binder Hash Variable

通过表单定义ID获取表单中下拉选项值的标签名,例如:

数据库保存的值为No,但表单上No对应的标签为“否”,则可用本hash变量返回“否”。例如:

#binder.options.FORM_DEF_ID.FIELD_ID[PRIMARY_KEY]#

如果跨应用,可以使用

#binder.options.APP_ID.FORM_DEF_ID.FIELD_ID[PRIMARY_KEY]#

也可以仅仅取值,不取标签,则去掉options

#binder.FORM_DEF_ID.FIELD_ID[PRIMARY_KEY]#

应用属性

App Definition Hash Variable

获取应用属性,例如:

  • 应用ID,名称,版本
  • 应用创建日期,修改日期
  • 应用发布状态
  • 应用license

App Message

App Message Hash Variable (Internationalization)  

  • 应用的国际化语言值
  • 也可灵活应用于应用级的属性设置

流程执行者

Performer Hash Variable  

在流程中通过活动定义ID获取指定节点的执行人的属性

URL参数值

Request Parameter Hash Variable  


举例:

URL为http://domain/jw....?name=a

#requestParam.name#
  • 返回值为 a


几个固定参数
#requestParam.key# - 返回userview key
#requestParam.userviewId#
#requestParam.menuId#
#requestParam.appId#
#requestParam.primaryKey#

#requestParam.primaryKey# 可用于Ajax子表单的JDBC加载绑定器SQL中,用于动态加载子表单值

用户相关

User Hash Variable  

Users Hash Variable

  • User
    • 获取指定用户的属性,不一定是当前用户的
  • Users
    • 通过用户组或部门ID获取所有用户清单
    • 返回值用分号分隔

Userview Key

Userview Key Hash Variable  

获取URL中的 userview key值,用于datalist binder中

#userviewKey#

工作流变量

Workflow Variable Hash Variable

获取工作流变量值

Http相关

Request Hash Variable

获取HttpServletRequest相关值,例如:

  • http或https
  • 域名
  • 端口
  • URL等

平台属性

Platform Hash Variable

获取当前Joget平台属性,例如:平台语言设置,时区,License,systemKey值等

Bean Shell

Bean Shell Hash Variable

通过调用环境变量中的脚本,执行一段BeanShell。

示例:

邮件中使用如下脚本

<img src="#beanshell.generateImage[json={form.table1.field1?url}]#" />

注:以上field1为一个手写签名字段

列表数据

Datalist Hash Variable (New in Joget DX)

根据列表定义ID返回列表值,返回值可显示为html或csv两种格式

#datalist.html.ID#
#datalist.csv.ID#
#datalist.html.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
#datalist.csv.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#

列表数据较多时仅显示list第一页的值

表达式

Expression Hash Variable (New in Joget DX)

对hash变量进行数字运算,字符串操作或条件判断后返回相应的值。

Note:

  • 表达式判断条件可以使用 and/or 组合条件
  • 表达式允许嵌套表达式
credits < 30 ? "freshman" : credits <= 59 ? "sophomore" : credits <= 89 ? "junior" : "senior";

对应的逻辑等同于

if (credits < 30) {
   return "freshman";
} else if (credits <= 59) {
   return "sophomore";
} else if (credits <= 89) {
   return "junior";
} else {
   return "senior";
}

报表设计

Report Builder Hash Variable (New in Joget DX)


参考样例

样例应用


常用样例

Hash变量容错处理

  • 利用表达式Hash变量的条件判断功能(if else)
  • 格式:#exp.Expression?Return1:Return2#
    • Expression,Return1,Return2中都可以用"{}"嵌套hash变量
    • Expression - 表达式计算或条件判断
    • Return1 - 条件满足时返回值
    • Return2 - 条件不满足时返回值
示例说明


Hash变量显示容错 - 常用
#exp.'{variable.remark?javascript}'.contains('variable.remark')?'':'{variable.remark}'#
Hash变量显示容错 - 不允许包含html
#exp.'{variable.remark?javascript}'.contains('variable.remark') or '{variable.remark?javascript}'.contains('</')?'':'{variable.remark}'#

使用时替换以上的 variable.remark 为相应的hash变量即可

判断hash变量#variable.remark#

  • 如果返回值包含"variable.remark"或者包含"</"则显示为空
  • 否则显示正常显示#variable.remark#的值

主要解决问题:

  • 如果hash变量返回不正常,或者包含了html标签则返回空
  • 一般用第一个条件即可
let isEmptyParam = "#exp.'{datalist.csv.dataListTest?javascript}'.isEmpty()or '{datalist.csv.dataListTest?javascript}'.contains('datalist.csv.dataListTest') or ('{datalist.csv.dataListTest?javascript}'+' ').split('\\n').length>2#"


if(isEmptyParam == 'true'){
    alert('请先给dataList添加数据,如果设置页面显示404,可能是您没有设置权限,请联系系统管理员');
    window.location.href= '';
}

判断列表是否为空

  • 如果返回空或者取不到值或者返回值为只有一行数据(表头行)那么返回true

判断列表为空时提示先录入数据并跳转到数据录入页面





  • No labels