...
Introduction
What are Hash Variable?
| English |
|---|
| Hash Variables gives users greater flexibility and freedom in accessing useful information or relevant run-time values from the system. |
A hash variable is a special hash-escaped keyword that can be used in :
...
| Tip |
|---|
To conveniently access the list of all hash variables available, use shortcut combination Ctrl -+ Shift -+ 3 in any of the components above to bring up the hash variable assistant.
Image Added |
Nested Hash Variable
...
| Code Block |
|---|
|
#envVariable.script?java#
#envVariable.script?nl2br;json#
#form.table.users?separator(, )#json#
#form.table.users?separator(, )# |
Hash Variable Return Values
- If the record does not exist, "#form.table.field#" returns the same = "#form.table.field#". Use the ternary operator ( condition ? exprIfTrue : exprIfFalse ) to check and set to NULL if the return value matches the origin hash variable (if used in BeanShell or Javascript).
- If record exist but field is empty, "#form.table.field#" returns empty = "".
- If record exist and field has value "abc", "#form.table.field#" returns the value = "abc".
Some hash variables listed below are not available in the Joget Community Edition, read the Detailed Plugin Comparison Between Editions for more information.
List Of Joget DX Hash Variables
...
| Name | Description |
|---|
| Prefix | currentUser |
| Description | To retrieve currently logged in user information. More user hash variables here. |
| Attributes | - #currentUser.username#
- #currentUser.firstName#
- #currentUser.lastName#
- #currentUser.fullName#
- #currentUser.email#
- #currentUser.active#
- #currentUser.timeZone#
- #currentUser.locale#
- #currentUser.roles#
In Joget Enterprise edition, these additional attributes are available:- User Meta Employment - #currentUser.employee.code#
- #currentUser.employee.jobTitle#
- #currentUser.employee.isHod#
HOD - #currentUser.hod.username#
- #currentUser.hod.firstName#
- #currentUser.hod.lastName#
- #currentUser.hod.email#
- #currentUser.hod.active#
- #currentUser.hod.timeZone#
Organization - #currentUser.organization.id#
- #currentUser.organization.name#
- #currentUser.organization.description#
Department - #currentUser.department.id#
- #currentUser.department.name#
- #currentUser.department.description#
Department HOD - #currentUser.department.hod.username#
- #currentUser.department.hod.firstName#
- #currentUser.department.hod.lastName#
- #currentUser.department.hod.email#
- #currentUser.department.hod.active#
- #currentUser.department.hod.timeZone#
Grade - #currentUser.grade.id#
- #currentUser.grade.name#
- #currentUser.grade.description#
Group - #currentUser.groups.id#
- #currentUser.groups.name#
|
| Scope of Use | - All components within the App.
|
...
| Name | Description |
|---|
| Prefix | form |
| Description | To get field value from form table. |
| Attributes | - #form.tableName.fieldId #
- #form.tableName.fieldId[recordId]# (Available in v3.1 and above) where "recordid" is a reserved variable used by Joget to retrieve the subform's id.
|
| Scope of Use | - In a Process Tool part of a Process.
- In a Form.
- In a process design.
|
| Sample Attributes | #form.registrationtableName.registeredDate# // will Will use the current record ID
#form.registrationtableName.registeredDate[0001]# // Where 0001 is the record ID to seek for
#form.registrationtableName.registeredDate[{variable.recordIdvarId}]#
|
Form Binder Hash Variable
...
| Name | Description |
|---|
| Prefix | user |
| Description | To get user information based on username. Replace the username below in red with the actual username (example admin) or {currentUser.username}. |
| Attributes | - #user.username.username#
- #user.username.firstName#
- #user.username.lastName#
- #user.username.fullName#
- #user.username.email#
- #user.username.active#
- #user.username.timeZone#
In Joget Enterprise edition, these additional attributes are available:- User Meta - #user.username.meta.KEY#
To read additional user meta data stored in dir_user_meta table. Example: #user.cat.meta.duration# will return the value "100".

Organization - #user.username.organization.id#
- #user.username.organization.name#
- #user.username.organization.description#
Department - #user.username.department.id#
- #user.username.department.name#
- #user.username.department.description#
Grade - #user.username.grade.id#
- #user.username.grade.name#
- #user.username.grade.description#
- #user.username.grade.organizationId#
HOD - #user.username.hod.username#
- #user.username.hod.firstName#
- #user.username.hod.lastName#
- #user.username.hod.email#
- #user.username.hod.active#
- #user.username.hod.timeZone#
Group - #user.username.groups.id#
- #user.username.groups.name#
Employment - #user.username.employee.code#
- #user.username.employee.jobTitle#
- #user.username.employee.isHod#
Department HOD - #user.username.department.hod.username#
- #user.username.department.hod.firstName#
- #user.username.department.hod.lastName#
- #user.username.department.hod.email#
- #user.username.department.hod.active#
- #user.username.department.hod.timeZone#
|
| Scope of Use | - All components within the App.
|
| Sample Attributes | - #user.admin.groups.name#
- #user.{currentUser.username}.groups.name#
- #user.admin.email#
- #user.{currentUser.username}.email#
- #user.cat.firstName#
- #user.{requestParam.username}.email# to retrieve the email address of the user passed via url parameter
|
...
| Name | Description |
|---|
| Prefix | request |
| Description | To get the value from the current HttpServletRequest object of the page view. | | To get the value from the current HttpServletRequest object of the page view. |
| Attributes | - #request.domainURL# Short syntax to retrieve the URL scheme and host name, for example "http://localhost:8080". (Available from Joget DX v7.0.8 and higher.)
- #request.baseURL#
| Attributes | - #request.domainURL# Short syntax to retrieve the URL scheme and host name, for example "http://localhost:8080/jw". (Available from Joget DX v7.0.8 and higher.)
- #request.characterEncoding#
- #request.contextPath#
- #request.header.NAME# , where NAME is the custom header name.
- #request.locale#
- #request.method#
- #request.pathInfo#
- #request.protocol#
- #request.queryString#
- #request.remoteAddr#
- #request.requestURI#
- #request.requestURL#
- #request.requestedSessionId#
- #request.scheme#
- #request.serverName#
- #request.serverPort#
- #request.servletPath#
|
| Scope of Use | - All components within the App where there is valid HttpServletRequest object. Such object will not be available in background activity such as in Process Tool triggered as a result of Deadlines.
|
| Sample Attributes | 
To retrieve the "Referer" header attribute value in the screenshot above, one may use the following hash variable. | Code Block |
|---|
| #request.header.Referer# |
See following example of retrieving a Joget APP URL using the Request Hash Variable. | Code Block |
|---|
| language | text |
|---|
| title | Request Hash Variable for an App's URL |
|---|
| #request.scheme#://#request.serverName#:#request.serverPort##request.contextPath#/web... |
|
...
| Name | Description |
|---|
| Prefix | datalist |
| Description | To display the datalist records in a grid format in your form or email tool. |
| Attributes | - #datalist.html.ID#
- #datalist.csv.ID#
- #datalist.size.ID# = Size returns only the number of records based on Datalist filter.
- #datalist.total.ID# = Total returns the record count regardless of Datalist filter.
- #datalist.html.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
- #datalist.csv.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
- #datalist.size.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
- #datalist.total.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
|
| Scope of Use | - All components within the App.
|
| Sample Attributes | - #datalist.html.myDataList#
- #datalist.csv.ImyDataList#
- #datalist.size.ImyDataList# = Size returns only the number of records based on Datalist filter.
- #datalist.total.ImyDataList# = Total returns the record count regardless of Datalist filter.#datalist.total.ImyDataList#
- #datalist.html.myDataList[d-8015999-fn_name=James&d-6304176-fn_email=james@gmail.com]#
- #datalist.csv.myDataList[d-8015999-fn_name=James&d-6304176-fn_email=james@gmail.com]#
- #datalist.size.myDataList[d-8015999-fn_name=James&d-6304176-fn_email=james@gmail.com]#
- #datalist.total.myDataList[d-8015999-fn_name=James&d-6304176-fn_email=james@gmail.com]#
- #datalist.html.list_f1[d-1338250-fn_id={process.recordId}]#
- #datalist.html.listId[filterId={form.table.field[{envVariable.variableId}]}]#
|
Expression Hash Variable (New)
...
| Panel |
|---|
| borderColor | purple |
|---|
| borderWidth | 1 |
|---|
| titleBGColor | #ddccff |
|---|
| borderStyle | solid |
|---|
| title | New Feature |
|---|
|
This is a new feature in Joget DX if you are using the Report Builder custom plugin. |
| Warning |
|---|
The API IP/Domain Whitelist setting in General Settings needs to be configured in order for reportLink hash variable to work. If a request is from a non-whitelisted IP/domain, the response will be a HTTP 400 Bad Request. |
| Name | Description |
|---|
| Prefix | reportLink |
| Description | To retrieve the particular report based on the reportId. To know more about Report Builder, see here. |
| Attributes | |
| Scope of Use | - All components within the App.
|
| Sample Attributes | - #reportLink.financialReport#
|
...
Download Demo App
...
name | APP_hash_variable_dx_kb.jwaheight | 150