Garantir l'unicité des ID d'élément pour les matrices IU

Cette rubrique explique comment modifier le code JavaScript pour assurer l'affichage correct des ID d'élément uniques pour les matrices IU.

Cette modification est uniquement requise pour le code qui affiche le HTML à l'aide d'une fonction getElementById() (ou similaire) pour générer des ID de liste et éviter les erreurs de vérification de compte ou similaires.

L'exemple de snippet ci-dessous contient les modifications nécessaires :


...
function getElementsFromList(namePrefix) {
    var ret = [];
    var elements = document.getElementsByTagName("INPUT");
    for(var i=0;i<elements.length;i++) {
        var elemID = elements[i].id;
        if((id) && (id.startsWith(namePrefix + '_')) {
            ret.push(elements[i]);
        }
    }
...
return ret;

Comme les ID ne sont pas nécessairement uniques dans les ID de matrices IU générées, le code ci-dessus garantit l'unicité lors de l'exécution en ajoutant un trait de soulignement et un numéro de ligne (par ex., monChamp_​1, monChamp_​2) pour permettre la gestion correcte du HTML affiché par le framework, tout en vous permettant tout de même de référencer les ID non modifiés contenus dans la matrice IU générée.

Une bascule dans le fichier spl.properties permet également de désactiver la génération d'ID uniques pour les éléments d'une grille (description ci-dessous). Toutefois, pour assurer la conformité aux normes, il est vivement recommandé de laisser cette bascule sur sa valeur par défaut.

 
Property Name: spl.runtime.compatibility.uiMapDisableGenerateUniqueHtmlIDs
File Name: spl.properties (under web project in FW)
Default Value: false
Accepted Values: true or false
Description: This property controls the generation of unique IDs for all input elements inside 
a list. When this value is set to true it disables the generation of unique IDs, thus 
replicating the old behavior. When this property is set to false or this property is missing 
it enables the generation of unique IDs, thus enabling the list to be standards-compliant.