When there is a repeatGroup in a UI config item:

# description
# {valueType: "string", order: 23500, required: true, showEl: "${numberOfInputs > $i$ && !externalizedText}", repeatGroup: "input", repeatCount: 50}
# grouperGshTemplate.testGshTemplate.input.$i$.description =	

Then the configs look like this:

grouperGshTemplate.myConfig.input.4.description = My description

We need a label on the screen for that, and specific to that group, if there is a name, the externalized text is (1 indexed):

config.GshTemplateConfiguration.attribute.input.i.description.label = Input __i+1__: description

Or zero indexed

config.GshTemplateConfiguration.attribute.input.i.description.label = Input __i__: description

That will get substituted in the subsection or input label either to the name of that grouped element, or the index or index plus one



The code that does the specific substitution is in GrouperConfigurationModuleBase.formatIndexes()

      // GSH templates
      if (StringUtils.equals(preIndex, "input")) {
        name = (String)this.retrieveObjectValueSubstituteMap().get("input." + index + ".name");
      }


  • No labels