Cómo garantizar IDs de Elemento Únicas para Mapas de Interface de Usuario (UI)

A continuación, se describe cómo modificar el código de JavaScript para garantizar la presentación adecuada de IDs de elemento únicas para Mapas de Interface de Usuario (UI).

La modificación es necesario únicamente para el código que presenta HTML mediante al uso de una función getElementById() (o similar) para generar IDs de lista y evitar errores de verificación de cuenta u otros errores relacionados.

El siguiente snippet de muestra contiene las modificaciones necesarias:


...
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;

Dado que las IDs no son necesariamente únicas en las IDs de Mapa de Interface de Usuario (UI) generadas, el código que se muestra arriba garantiza exclusividad en el tiempo de ejecución mediante el anexo de un guión bajo y un número de fila (por ejemplo, myField_​1, myField_​2) para el manejo adecuado por parte de Framework en el HTML presentado, a la vez que se permite hacer referencia a las IDs sin modificar contenidas en el Mapa de Interface de Usuario (UI).

Un seccionador en el archivo spl.properties también permite desactivar la generación de IDs únicas para elementos de una grilla (como se describe abajo), aunque, por motivos de cumplimiento de standards, se recomienda conservar el valor por defecto del seccionador.

 
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.