As stated previously, the multi-value attribute's name is typical of any other name, however the gadget name that represents that attribute ends in an underscore "_". When defining this gadget there are several items that must be taken into account. Example:


Text {
  Name = "my_roles_";
  Value = "/.../ClientRolesSelect";
  Visible = NO;
  Columns = 1;
}

In this example, we've declared a text gadget with a name of "my_roles_". When the panel gets loaded, the GUI code detects that this gadget represents a multi-valued attribute and loads the value of the attribute into a special location in the gadget. This location is not accessible from the DSL or from the GUI itself.

The value of this gadget is set to the patch of the gadget "ClientRolesSelect". The ClientRolesSelect gadget is a list box that will display each of the id's in the multi-value attribute's value for selection. When the panel loads, the ClientRolesSelect gadget is automatically populated with the id's from the value of the multi-value attribute sap_roles.

All of the needed callbacks to support a multivalued attribute are in the following pages, with examples for each callback. With the ability to chain callbacks together to act on changed or selected events, a powerful and complex set of multi-valued data can be built. Just remember that the more complex your data the harder it is to edit the data using the CLI's available in Tivoli SecureWay User Administration. Supported AEF DSL Callbacks 161 Tivoli®  SecureWay Application Management Toolkit Guide