ClientScriptBuilderHelper (via un appel à sa méthode setAttr) inclut le HTML généré par JavaScript.jsp <RecordFormatName> dans la sortie de PageBuilder.jsp. Chaque JSP JavaScript du format d'enregistrement commence par le même tag jsp :useBean (déclarant un bean IDisplayRecord) comme son JSP partenaire (<RecordFormatName>.jsp). Un JSP JavaScript de non-format d'enregistrement de sous-fichier
JavaScript orienté objet
a, pour
chaque champ, un appel vers une
fonction JavaScript nommée cf (abréviation
de create field). Pour des
formats de sous-fichiers, ces appels de
niveau de champ sont destinés à scf
(abréviation de subfile create field). Ce
qui suit, par exemple, est l’appel de
fonction cf pour le champ de format
d’enregistrement BEERIN nommé
CATEGORY:
cf("1<%=zOrder%>_BEERIN$CATEGORY",9,5,
{<% if(BEERIN.isMDT0n("CATEGORY"))
{%>mdt:true,<% }%>
check:"ME;",values:"L;A;P;B;W;S;",
datalength:1});
Le HTML généré traduit l’appel de fonction ci-dessus en
cf("11_BEERIN$CATEGORY",9,5,
{check:"ME;",values:"L;A;P;B;W;S;",
datalength:1});
Mais pour comprendre ce que fait ce code JavaScript
généré, je dois vous présenter JavaScript orienté objet
de WebFacing, qu’IBM utilise dans ses routines Client-
Script/webface.js. La figure 3 montre la déclaration de deux
fonctions JavaScript: WFOutputField et WFInputField.
Immédiatement après les déclarations de fonctions vides, on
trouve un ensemble de définitions d’attributs et leurs
paramètres par défaut. Le mot prototype est le nom d’une propriété
pour tous les objets JavaScript ; il est utilisé pour définir
un attribut qui sera disponible avec toutes les instances de ce
type d’objet. Quand le JavaScript webface.js est chargé initialement
dans une fenêtre navigateur WebFacing, il instancie un
objet appelé wfInfoDB avec l’instruction suivante:
var wfInfoDB = new Object() ;
Ensuite, lorsque les fonctions cf et scf provenant du JSP
JavaScript du format d’enregistrement sont traitées pour
chaque champ, des instances des objets WFOutputField sont
créées et leurs références assignées à la variable wfInfoDB :
wfInfoDB[idStr] = new WFInputField();
JavaScript adapte les types de variables selon leur mode
d’utilisation. Donc, même si wfInfoDB a été créé initialement
pour référencer un objet, dès qu’il est utilisé comme une matrice,
JavaScript morphe wfInfoDB dans un type array. Il est
intéressant de noter qu’on peut indexer les matrices
JavaScript par chaînes. Ainsi, le idStr dans l’exemple précédent
fait référence à un nom de champ HTML tel que
11_BEERIN$CATEGORY. Notez que vous définissez des
champs en sortie seule avec une fonction JavaScript appelée
rc (abréviation de row/column), et la fonction rc instancie et
assigne les objets WFOutputField aux éléments de matrice
wfInfoDB.
La fonction cf prend une liste de paramètres qui inclut le
nom du champ ainsi que les valeurs ligne et colonne. La fonction
scf prend le nom du champ, mais pas les valeurs de ligne
ou de colonne. Mais le dernier paramètre des deux fonctions
cf et scf est une matrice d’initialiseurs d’objets JavaScript placés
entre accolades. Ces initialiseurs ont la forme <object attribute
name>:<value>. L’exemple suivant est la matrice
des valeurs d’initialiseur prises du dernier paramètre de l’appel
de fonction cf montré précédemment :
{check:"ME;",values:"L;A;P;B;W;S;",
datalength:1}
A noter comment les noms des attributs d’objet correspondent
aux paramètres du prototype WFInputField dans la
figure 3.
Les deux fonctions cf et scf invoquent une fonction
générique appelée crtfld (abréviation de create field). La
fonction crtfld crée l’objet WFInputField, définit les propriétés
WFInputField avec la matrice d’initialiseur, définit l’attribut
dhtml pour référencer le champ d’entrée HTML, puis
modifie la manière dont ce champ d’entrée HTML traite les
événements UI du navigateur. Cela mérite une explication :
les éléments d’entrée HTML peuvent se voir associer des
fonctions JavaScript pour s’exécuter quand l’un quelconque
des événements suivants se produit : onKeyPress, onPaste,
onClick, onSelect, onBlut, onFocus, onMouseOver,
onMouseOut, onMouseUp et onKeyUp.
Le fichier webface.js contient des dizaines de fonctions
JavaScript qui ont été codées pour simuler la fonctionnalité
5250. (Par exemple, handleCHECK_ER, handleDSPATR_SP,
respectMaxLengthOnKeyPress, onPasteUpdateCursorOffset,
checkCharShift.) Et, comme l’un quelconque des événements
GUI du navigateur standard peut avoir à manipuler
plusieurs de ces appels de fonctions de simulations 5250, la
fonction crtfld utilise une routine appelée addWF-Handler-
OnTop. Comme son nom l’indique, la fonction addWFHandlerOnTop
ajoute du code JavaScript au code qui a déjà
été défini pour s’exécuter quand un événement UI du
navigateur spécifique se produit.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
- Activer la mise en veille prolongée dans Windows 10
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Une baie de stockage c’est quoi ?
- Cybersécurité Active Directory et les attaques de nouvelle génération
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
Les plus consultés sur iTPro.fr
- Semperis : gouverner l’identité à l’ère des agents IA
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Akamai Technologies déploie sa stratégie de protection en ligne
Articles les + lus
Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
Moderniser le développement logiciel : de la fragmentation à l’intégration
Analyse Patch Tuesday Mars 2026
Une nouvelle ère de la modernisation du mainframe
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
À la une de la chaîne Tech
- Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
