Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

What are Hash Variables?

English

Hash

Variables give users greater flexibility and freedom in accessing useful information or relevant run-time values from the system.
Hash variable is a placeholder

variables in Joget are placeholders used to dynamically display data

from various sources

within

your application. It allows you

applications. They allow users to insert dynamic content without hardcoding values,

making your applications more flexible and customizable.

Key Uses of Hash Variables in Joget:

Fetching Form Data:

Retrieve and display data from form fields.plaintext
#form.formId.fieldId# Example: #form.myForm.name# gets the value from the "name" field in the form "myForm".

Accessing Workflow Variables:

Display values from workflow variables.plaintext
#variable.variableId# Example: #variable.requesterName# gets the value of the "requesterName" variable.

System Information:

Get details like the current date or logged-in user info.plaintext
#currentUser.username# #date.today#

Example Uses:

Personalized Email Content: Use hash variables to customize automated emails.

plaintext
Hello #form.requestForm.name#, Your request submitted on #date.today# has been approved.

Dynamic User Interface: Show different content based on user input or workflow state.

plaintext
{% if #form.feedback.rating# >= 4 %} Thank you for your positive feedback! {% else %} We're sorry to hear that. Please tell us how we can improve. {% endif %}

Summary

Hash variables in Joget make your applications dynamic by allowing you to fetch and display data from forms, workflows, and the system, without hardcoding values. They help create flexible and user-friendly applications.

A hash variable is a special hash-escaped keyword that can be used in :

  • Form Builder
  • List Builder
  • UI Builder
  • BeanShell code
  • Supported plugin configuration properties
  • Activity name in Workflow Designer
  • External Form URL when mapping an activity to an external form

to return the value of some useful runtime variables from Joget components. Download the hash variable demonstration app for a quick look.

...

which enhances flexibility and customization. Hash variables can fetch and display data from various sources such as forms, workflows, and the system itself. They promote customization and flexibility by avoiding hardcoded values, ultimately improving the user-friendliness of Joget applications.

A hash variable is a special hash-escaped keyword that can be used in :

  • Form Builder
  • List Builder
  • UI Builder
  • BeanShell code
  • Supported plugin configuration properties
  • Activity name in Workflow Designer
  • External Form URL when mapping an activity to an external form

to return the value of some useful runtime variables from Joget components. Download the hash variable demonstration app for a quick look.

Tip
To conveniently access the list of all hash variables available, use the shortcut combination Ctrl + Shift + 3 in any of the components above to bring up the Property Assistant.

Image Added


Nested Hash Variable

A Hash Variable can be used inside another Hash Variable to form a Nested Hash Variable.

The syntax for the inner Hash Variable is wrapped by a pair of {curly bracket}.

Code Block
languagejava
titleSyntax / Format
#prefix.{prefix.variableKey}#
Here are some examples:
Code Block
titleExample
#date.{envVariable.dateFormat}#
#user.{variable.username}.firstName#
#form.tableChild.field1[{form.tableParent.childId}]#



Form Hash Variable by Index

You can pass an index or primary key value to a Hash Variable for retrieval.

The syntax for the inner Hash Variable is wrapped by a pair of [square brackets] .

Code Block
languagejava
titleSyntax / Format
#form.myTable.fieldId.[primaryKeyValue]#

Here are some examples:

Code Block
titleExample
#form.contact.name[007]# where "007" is the primary key or "id" value of database table "app_fd_contact".

Escaping the Resultant Hash Variable

The parsed/returned Hash Variable may cause incompatibility with the current context/environment such as syntax error in a script. Therefore, one may pass in additional parameters into the hash variable declared to

Nested Hash Variable

A Hash Variable can be used inside another Hash Variable to form a Nested Hash Variable.

The syntax for the inner Hash Variable is wrapped by a pair of {curly bracket}.

Code Block
languagejava
titleSyntax / Format
#prefix.{prefix.variableKey}#
Here are some examples:
Code Block
titleExample
#date.{envVariable.dateFormat}#
#user.{variable.username}.firstName#
#form.tableChild.field1[{form.tableParent.childId}]#

Form Hash Variable by Index

You can pass an index or primary key value to a Hash Variable for retrieval.

The syntax for the inner Hash Variable is wrapped by a pair of [square brackets] .

Code Block
languagejava
titleSyntax / Format
#form.myTable.fieldId.[primaryKeyValue]#

Here are some examples:

Code Block
titleExample
#form.contact.name[007]# where "007" is the primary key or "id" value of database table "app_fd_contact".

Escaping the Resultant Hash Variable

The parsed/returned Hash Variable may cause incompatibility with the current context/environment such as syntax error in a script. Therefore, one may pass in additional parameters into the hash variable declared to escape certain characters. Before ending a hash variable with a hash "#", add a question mark character "?" followed by the required format, for example "#form.table.photo?img2base64#". You may include multiple by defining semicolon ";" separated values.

...

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

Hash Variable Return ValuesVariable 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"If the record does not exist, "#form.table.field#" returns the same value = "abc"#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".

Hash Variable Features In Joget DX Community Edition

Some hash variables listed below are not available in the Joget Community Edition, read the Detailed Plugin Comparison Between Editions for more information.

...

  • .

Hash Variable Features In Joget DX Community Edition

Some hash variables listed below are not available in the Joget Community Edition, read the Detailed Plugin Comparison Between Editions for more information.

Hash Variable - Property Assistant

Panel
borderColorpurple
bgColorwhite
borderWidth1
titleBGColor#ddccff
borderStylesolid
titleNew Feature

This is a new feature in Joget DX 8.

Property Assistant is a new feature in Joget DX 8, that allows you to quickly access and insert Hash Variables (and others)in any form element, UI element or list.

The Property Assistant allows you to choose a hash variable's attributes from a select box (Figure 1). 

Image Added

Figure 1: Property Assistant - Hash Variable Attributes Selection

You can also insert Nested Hash Variables easily using the Property Assistant by clicking on the desired attribute that will include the nested variable and then clicking back on the variable list to choose a variable to insert. (See Figure 2)

Image Added

Figure 2: Property Assistant - Nested Hash Variable

System-wide Hash Variable

Panel
borderColorpurple
bgColorwhite
borderWidth1
titleBGColor#ddccff
borderStylesolid
titleNew Feature

This is a new feature in Joget DX 8.2.

...

The System Variables menu introduces system-wide Hash Variables, which allows users to create and define custom hash variables that can be used in Property Assistant. This means that system-wide hash variables can be used in any app as it is not tied to any specific app.

System-wide Hash Variables can be accessed in Property Assistant using the #sysVariable.KEY# hash variable, where KEY is defined in the System Variables settings page.
Image Added

The Property Assistant allows you to choose a hash variable's attributes from a select box (Figure 1). 

Image Removed

Figure 1: Property Assistant - Hash Variable Attributes Selection

You can also insert Nested Hash Variables easily using the Property Assistant by clicking on the desired attribute that will include the nested variable and then clicking back on the variable list to choose a variable to insert. (See Figure 2)

Image Removed

Figure 2: Property Assistant - Nested Hash Variable

List Of Joget DX Hash Variables

...

NameDescription
PrefixuserviewKey
Description

Userview Key Hash Variable is used solely for the purpose of accessing the current UI key's value.

Typical use case for this hash variable are:-

  • Filtering a List based on UI Key.
  • Preloading certain form data field (e.g. subform) in a Form or Form part of a process flow based on UI Key.
Attributes
  • #userviewKey#
Scope of Use

Workflow Variable Hash Variable

...

NameDescription
Prefixbeanshell
DescriptionUsing App Variable to execute bean shell script. Passing parameter using URL query string syntax.
Attributes
  • #beanshell.APP_VARIABLE#

  • #beanshell.APP_VARIABLE[PARAMETERS_URL_QUERY_STRING]#

Scope of Use
  • All components within the App.
Sample Attributes

To execute a script stored in the "welcome" app variable with parameter "username" and "dept":

Code Block
languagejava
if (username != null && username.length == 1 && !username[0].isEmpty()) {
       return "Welcome " + username[0] + " (" + dept[0] + "),";
} else {
       return "";
}
Related Tutorials

...

** for "datalist.col.xx.ID.column" variables, the "column" parameter refers to the order of the column in the list starting from 0. hence, to refer to the first column in a list called list_f1, your hash variable would look like this : #datalist.col.sum.list_f1.column_0
** the column are counted from 0, and does not include the default checkbox included in list tables

Expression Hash Variable

this : #datalist.col.sum.list_f1.column_0
** the column are counted from 0, and does not include the default checkbox included in list tables

Expression Hash Variable

NameDescription
Prefixexp
DescriptionMathematical and string operations on hash variables
Attributes#exp.variable#
Scope of Use
  • All components within the App.
Sample Attributes

Testing Values

  • #envVariable.num1# = 55
  • #envVariable.num2# = 288
  • #envVariable.double1# = 123.45
  • #envVariable.double2# = 246.78
  • #envVariable.bool1# = true
  • #envVariable.bool2# = false
  • #envVariable.str1# = Hello World!
  • #envVariable.str2# = Using Joget Hash Variables!
  • #envVariable.empty# =
  • #envVariable.hashVariable# = #assignment.processId#

Mathematical operators

  • #exp.{envVariable.num1} + {envVariable.num2}# = 343
  • #exp.{envVariable.num1} - {envVariable.num2}# = -233
  • #exp.{envVariable.double1} * {envVariable.double2}# = 30464.991
  • #exp.{envVariable.num2} / {envVariable.num1}# = 5
  • #exp.{envVariable.num1} % 7# = 6
  • #exp.({envVariable.num1} + 2) * 2# = 114
  • #exp.{envVariable.num1} + 2 * 2# = 59
  • #exp.2 ^ 2# = 4

Logical operators

  • #exp.{envVariable.bool1} and {envVariable.bool2}# = false
  • #exp.{envVariable.bool1} or {envVariable.bool2}# = true
  • #exp.!{envVariable.bool1}# = false

Relational operators

  • #{envVariable.num1} gt {envVariable.num2}# = false
  • #{envVariable.num1} ge {envVariable.num1}# = true
  • #{envVariable.num1} lt {envVariable.num2}# = true
  • #{envVariable.num1} le {envVariable.num1}# = true
  • #{envVariable.num1} eq {envVariable.num1}# = true
  • #{envVariable.num1} ne {envVariable.num1}# = false

Ternary Operator (If Else)

  • #exp.({envVariable.num1} lt {envVariable.num2})?{envVariable.num1}:{envVariable.num2}#= 55
  • #exp.'{envVariable.empty?expression}'.isEmpty()?'empty':'has value'#= empty

String methods

Note: Basically most of the String methods can be used, using `?expression` to escape single quote in value.

  • #exp.'{envVariable.str1?expression}' + ' ' + '{envVariable.str2?expression}'# = Hello World! Using Joget Hash Variables
  • #exp.'{envVariable.str1?expression}'.substring(5)# = World!
  • #exp.'{envVariable.str1?expression}'.toLowerCase()# = hello world!
  • #exp.'{envVariable.str1?expression}'.toUpperCase()# = HELLO WORLD!
  • #exp.'{envVariable.str1?expression}'.replace('world', 'there')# = Hello World!
  • #exp.'{envVariable.str1?expression}'.replaceFirst('[a-z]', '*')# = H*llo World!
  • #exp.'{envVariable.str1?expression}'.replaceAll('[a-z]', '*')# = H**** W****!
  • #exp.'{envVariable.str1?expression}'.charAt(0)# = H
  • #exp.'{envVariable.str1?expression}'.contains('World')# = true
  • #exp.'{envVariable.str1?expression}'.equalsIgnoreCase('{envVariable.str1?expression}'.toLowerCase())# = true
  • #exp.'{envVariable.empty?expression}'.isEmpty()# = true
  • #exp.'{envVariable.str1?expression}'.indexOf('World')# = 6
NameDescription
Prefixexp
DescriptionMathematical and string operations on hash variables
Attributes#exp.variable#
Scope of Use
  • All components within the App.
Sample Attributes

Testing Values

  • #envVariable.num1# = 55
  • #envVariable.num2# = 288
  • #envVariable.double1# = 123.45
  • #envVariable.double2# = 246.78
  • #envVariable.bool1# = true
  • #envVariable.bool2# = false
  • #envVariable.str1# = Hello World!
  • #envVariable.str2# = Using Joget Hash Variables!
  • #envVariable.empty# =
  • #envVariable.hashVariable# = #assignment.processId#

Mathematical operators

  • #exp.{envVariable.num1} + {envVariable.num2}# = 343
  • #exp.{envVariable.num1} - {envVariable.num2}# = -233
  • #exp.{envVariable.double1} * {envVariable.double2}# = 30464.991
  • #exp.{envVariable.num2} / {envVariable.num1}# = 5
  • #exp.{envVariable.num1} % 7# = 6
  • #exp.({envVariable.num1} + 2) * 2# = 114
  • #exp.{envVariable.num1} + 2 * 2# = 59
  • #exp.2 ^ 2# = 4

Logical operators

  • #exp.{envVariable.bool1} and {envVariable.bool2}# = false
  • #exp.{envVariable.bool1} or {envVariable.bool2}# = true
  • #exp.!{envVariable.bool1}# = false

Relational operators

  • #{envVariable.num1} gt {envVariable.num2}# = false
  • #{envVariable.num1} ge {envVariable.num1}# = true
  • #{envVariable.num1} lt {envVariable.num2}# = true
  • #{envVariable.num1} le {envVariable.num1}# = true
  • #{envVariable.num1} eq {envVariable.num1}# = true
  • #{envVariable.num1} ne {envVariable.num1}# = false

Ternary Operator (If Else)

  • #exp.({envVariable.num1} lt {envVariable.num2})?{envVariable.num1}:{envVariable.num2}#= 55
  • #exp.'{envVariable.empty?expression}'.isEmpty()?'empty':'has value'#= empty

String methods

Note: Basically most of the String methods can be used, using `?expression` to escape single quote in value.

    #exp.'{envVariable.str1?expression}' + ' ' + '{envVariable.str2?expression}'# = Hello World! Using Joget Hash Variables
  • #exp.'{envVariable.str1?expression}'.substringlastIndexOf(5'World')# = World!6
  • #exp.'{envVariable.str1?expression}'.toLowerCasestartsWith('H')# = hello world!true
  • #exp.'{envVariable.str1?expression}'.toUpperCaseendsWith('!')# = HELLO WORLD!true

Custom Methods

  • #exp.$isParsed('{envVariable.str1?expression}'.replace('world', 'there')# = Hello World!
  • #exp.'{envVariable.str1?expression}'.replaceFirst('[a-z]', '*')# = H*llo World!
  • #exp.'{envVariable.str1?expression}'.replaceAll('[a-z]', '*')# = H**** W****!
  • #exp.'{envVariable.str1?expression}'.charAt(0)# = H
  • #exp.'{envVariable.str1?expression}'.contains('World')# = true
  • #exp.'{envVariable.str1?expression}'.equalsIgnoreCase('{envVariable.str1?expression}'.toLowerCase())# = true
  • #exp.'{envVariable.empty?expression}'.isEmpty()# = true
  • #exp.'{envVariable.str1?expression}'.indexOf('World')# = 6
  • #exp.'{envVariable.str1?expression}'.lastIndexOf('World')# = 6
  • #exp.'{envVariable.str1?expression}'.startsWith('H')# = true
  • #exp.'{envVariable.str1?expression}'.endsWith('!')# = true

Custom Methods

  • #exp.$isParsed('{envVariable.hashVariable}')# = false

Math methods

Note: All java.lang.Math methods can be used.

  • #exp.$sin(30)# = -0.9880316240928618
  • #exp.$cos(30)# = 0.15425144988758405
  • #exp.$tan(30)# = -6.405331196646276
  • #exp.$asin(30)# = NaN
  • #exp.$acos(30)# = NaN
  • #exp.$atan(30)# = 1.5374753309166493
  • #exp.$sinh(30)# = 5.343237290762231E12
  • #exp.$cosh(30)# = 5.343237290762231E12
  • #exp.$tanh(30)# = 1.0
  • #exp.$abs(-7)# = 7.0
  • #exp.$max(60,30)# = 60.0
  • #exp.$min(60,30)# = 30
  • #exp.$round(79.52)# = 80
  • #exp.$sqrt(12)# = 3.4641016151377544
  • #exp.$cbrt(81)# = 4.326748710922225
  • #exp.$pow(4, 2)# = 16.0
  • #exp.$signum(82.7)# = 1.0
  • #exp.$ceil(82.7)# = 83.0
  • #exp.$copySign(740.4, -29.1)# = -740.4
  • #exp.$nextAfter(84352.24, 154.284)# = 84352.234
  • #exp.$nextUp(744.93)# = 744.93005
  • #exp.$nextDown(744.93)# = 744.9299999999998
  • #exp.$floor(744.93)# = 744.0
  • #exp.$floorDiv(25, 3)# = 8
  • #exp.$random()# = 0.3988245190916774
  • #exp.$rint(81.68)# = 82.0
  • #exp.$hypot(8, 6)# = 10.0
  • #exp.$ulp(8.1)# = 9.536743E-7
  • #exp.$getExponent(50.45)# = 5
  • #exp.$IEEEremainder(387.1, 4.2)# = 0.7000000000000064
  • #exp.$addExact(469, 737)# = 1206
  • #exp.$subtractExact(469, 737)# = -268
  • #exp.$multiplyExact(469, 737)# = 345653
  • #exp.$incrementExact(674)# = 675
  • #exp.$decrementExact(674)# = 673
  • #exp.$negateExact(674)# = -674
  • #exp.$toIntExact(-829)# = -829
  • #exp.$log(38.9)# = 3.6609942506244004
  • #exp.$log10(38.9)# = 1.5899496013257077
  • #exp.$log1p(26)# = 3.295836866004329
  • #exp.$exp(2)# = 7.38905609893065
  • #exp.$expm1(2)# = 6.38905609893065
  • #exp.$toDegrees(5)# = 286.4788975654116
  • #exp.$toRadians(180.0)# = 3.141592653589793

Report Builder Hash Variable

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.

...

To retrieve the particular report based on the reportId.

To know more about Report Builder, see here.

...

  • #reportLink.rp_report01#

...

  • All components within the App.

...

  • #reportLink.financialReport#
  • hashVariable}')# = false

Math methods

Note: All java.lang.Math methods can be used.

  • #exp.$sin(30)# = -0.9880316240928618
  • #exp.$cos(30)# = 0.15425144988758405
  • #exp.$tan(30)# = -6.405331196646276
  • #exp.$asin(30)# = NaN
  • #exp.$acos(30)# = NaN
  • #exp.$atan(30)# = 1.5374753309166493
  • #exp.$sinh(30)# = 5.343237290762231E12
  • #exp.$cosh(30)# = 5.343237290762231E12
  • #exp.$tanh(30)# = 1.0
  • #exp.$abs(-7)# = 7.0
  • #exp.$max(60,30)# = 60.0
  • #exp.$min(60,30)# = 30
  • #exp.$round(79.52)# = 80
  • #exp.$sqrt(12)# = 3.4641016151377544
  • #exp.$cbrt(81)# = 4.326748710922225
  • #exp.$pow(4, 2)# = 16.0
  • #exp.$signum(82.7)# = 1.0
  • #exp.$ceil(82.7)# = 83.0
  • #exp.$copySign(740.4, -29.1)# = -740.4
  • #exp.$nextAfter(84352.24, 154.284)# = 84352.234
  • #exp.$nextUp(744.93)# = 744.93005
  • #exp.$nextDown(744.93)# = 744.9299999999998
  • #exp.$floor(744.93)# = 744.0
  • #exp.$floorDiv(25, 3)# = 8
  • #exp.$random()# = 0.3988245190916774
  • #exp.$rint(81.68)# = 82.0
  • #exp.$hypot(8, 6)# = 10.0
  • #exp.$ulp(8.1)# = 9.536743E-7
  • #exp.$getExponent(50.45)# = 5
  • #exp.$IEEEremainder(387.1, 4.2)# = 0.7000000000000064
  • #exp.$addExact(469, 737)# = 1206
  • #exp.$subtractExact(469, 737)# = -268
  • #exp.$multiplyExact(469, 737)# = 345653
  • #exp.$incrementExact(674)# = 675
  • #exp.$decrementExact(674)# = 673
  • #exp.$negateExact(674)# = -674
  • #exp.$toIntExact(-829)# = -829
  • #exp.$log(38.9)# = 3.6609942506244004
  • #exp.$log10(38.9)# = 1.5899496013257077
  • #exp.$log1p(26)# = 3.295836866004329
  • #exp.$exp(2)# = 7.38905609893065
  • #exp.$expm1(2)# = 6.38905609893065
  • #exp.$toDegrees(5)# = 286.4788975654116
  • #exp.$toRadians(180.0)# = 3.141592653589793

Report Builder Hash Variable

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.

NameDescription
PrefixreportLink
Description

To retrieve the particular report based on the reportId.

To know more about Report Builder, see here.

Attributes
  • #reportLink.rp_report01#
Scope of Use
  • All components within the App.
Sample Attributes
  • #reportLink.financialReport#

Code Builder Hash Variable

NameDescription
Prefixcode
Description

To retrieve the template based on the code snippet ID.

Attributes
  • #code.cs-templateId#
Scope of Use
  • All components within the App.
Sample Attributes
  • #code.cs-calculationScript#


uiListCount Hash Variable

Panel
borderColorpurple
bgColorwhite
borderWidth1
titleBGColor#ddccff
borderStylesolid
titleNew Feature

This is a new feature in Joget DX 8.

NameDescription
PrefixuiListCount
Description

The uiListCount hash variable is primarily utilized to retrieve the Datalist or Inbox menu count value.

Attributes
  • #uiListCount.MENU_ID#
  • #uiListCount.UI_ID.MENU_ID#
Scope of Use
  • All components within the App except UI Permission.
Warning

uiListCount cannot be used inside UI permission. This is due to:
1. UI permission contains a uiListCount hash variable
2. uiListCount Hash requires UI to load to get the count
3. In order to load the UI design,  the UI permission will be called. It goes back to step 1.
(Will cause an infinite recursion that eventually returns a StackOverflow exception error :

 ERROR 15 May 2024 09:27:20 org.apache.jsp.WEB_002dINF.jsp.error500_jsp - Handler dispatch failed; nested exception is java.lang.StackOverflowError2org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError
Caused by: java.lang.StackOverflowError



Sample Attributes

See examples below, based on the usage within the default CRM application:

  • #uiListCount.MENU_ID# where MENU_ID is the id of the menu in your Userview for Datalist or Inbox (Example usage: "#uiListCount.proposal_inbox_list#")
  • #uiListCount.UI_ID.MENU_ID# where UI_ID is the id of the Userview (Example usage: "#uiListCount.crm_userview_sales.proposal_inbox_list#")

Escape Format

Code Builder Hash Variable

...

To retrieve the template based on the code snippet ID.

...

  • #code.cs-templateId#

...

  • All components within the App.

...

  • #code.cs-calculationScript#

...

Hash Variable

Panel
borderColorpurple
bgColorwhite
borderWidth1
titleBGColor#ddccff
borderStylesolid
titleNew Feature

This is a new feature in Joget DX 8.

  • All components within the App except UI Permission.
NameDescription
Prefix
uiListCount
Description

The uiListCount hash variable is primarily utilized to retrieve the Datalist or Inbox menu count value.

Attributes
  • #uiListCount.MENU_ID#
  • #uiListCount.UI_ID.MENU_ID#
Scope of Use
Warning

uiListCount cannot be used inside UI permission. This is due to:
1. UI permission contains a uiListCount hash variable
2. uiListCount Hash requires UI to load to get the count
3. In order to load the UI design,  the UI permission will be called. It goes back to step 1.
(Will cause an infinite recursion that eventually returns a StackOverflow exception error :

 ERROR 15 May 2024 09:27:20 org.apache.jsp.WEB_002dINF.jsp.error500_jsp - Handler dispatch failed; nested exception is java.lang.StackOverflowError2org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError
Caused by: java.lang.StackOverflowError

Sample Attributes

See examples below, based on the usage within the default CRM application:

  • #uiListCount.MENU_ID# where MENU_ID is the id of the menu in your Userview for Datalist or Inbox (Example usage: "#uiListCount.proposal_inbox_list#")
  • #uiListCount.UI_ID.MENU_ID# where UI_ID is the id of the Userview (Example usage: "#uiListCount.crm_userview_sales.proposal_inbox_list#")

Escape Format Hash Variable

Panel
borderColorpurple
bgColorwhite
borderWidth1
titleBGColor#ddccff
borderStylesolid
titleNew Feature

This is a new feature in Joget DX 8.

?decimal(decimal_number)
Description

The escape format hash variable used to allow the formatting of decimal places. 

Info

This hash variable can be use on any variable that have decimal values. 

Attributes
  • #variable.variableName?decimal(decimal_number)#
  • #appVariable.keyName?decimal(decimal_number)#
  • #envVariable.keyName?decimal(decimal_number)#
Scope of Use
  • All components within the App.
Sample Attributes
  • #appVariable.double1?decimal(1)# (Example usage for 1 decimal places using app variable)
  • #appVariable.double2?decimal(2)# (Example usage for 2 decimal places using app variable)
  • #envVariable.double1?decimal(1)# (Example usage for 1 decimal places using environment variable)
  • #envVariable.double2?decimal(2)# (Example usage for 2 decimal places using environment variable)

Stats Hash Variable

NameDescription
Prefixstats
Description

Display various Joget system and app statistics.  

Attributes
  • #stats.transactionCount#
  • #stats.slowTrace#
  • #stats.errorCount#
  • #stats.runningProcess#
  • #stats.completedProcess#
  • #stats.responseTimesCheck#
  • #stats.memoryUsageCheck#
  • #stats.cpuUsageCheck#
  • #stats.dbConnectionsCheck#
  • #stats.errorRateCHeck#
  • #stats.nodeCount#
  • #stats.publishedAppCount#
  • #stats.unPublishedAppCount#
  • #stats.user.active#
  • #stats.user.inactive#
  • #stats.user.total#
  • #stats.appList#
  • #stats.app.total#
  • #stats.form.countPerApp#
  • #stats.form.total#
  • #stats.errorRateCheck#
  • #stats.list.countPerApp#
  • #stats.list.total#
  • #stats.UI.countPerApp#
  • #stats.UI.total#
  • #statsgroupList.#
  • #stats.group.count#
  • #stats.group.countPerGroup#
  • #stats.group.total#
Scope of Use
  • All components within the App.
Sample Attributes
  • #stats.group.count#: Displays the total group count.
NameDescription
Prefix?decimal(decimal_number)
Description

The escape format hash variable used to allow the formatting of decimal places. 

Info

This hash variable can be use on any variable that have decimal values. 

Attributes
  • #variable.variableName?decimal(decimal_number)#
  • #appVariable.keyName?decimal(decimal_number)#
  • #envVariable.keyName?decimal(decimal_number)#
Scope of Use
  • All components within the App.
Sample Attributes
  • #appVariable.double1?decimal(1)# (Example usage for 1 decimal places using app variable)
  • #appVariable.double2?decimal(2)# (Example usage for 2 decimal places using app variable)
  • #envVariable.double1?decimal(1)# (Example usage for 1 decimal places using environment variable)
  • #envVariable.double2?decimal(2)# (Example usage for 2 decimal places using environment variable)

Hash Variables In Joget Marketplace

...

Download Demo App

View file
nameAPP_kb_dx8_hash_variable_demo_dx8_kb.jwa
height150