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
- Cybersécurité Active Directory et les attaques de nouvelle génération
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Afficher les icônes cachées dans la barre de notification
- Activer la mise en veille prolongée dans Windows 10
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
Les plus consultés sur iTPro.fr
- La bataille de la 6G se gagne dans la donnée en temps réel
- BlueSecure repense la sensibilisation à la cybersécurité avec des formats immersifs et engageants
- Les agents d’IA fragilisent la sécurité : pour les sécuriser, inutile de repartir de zéro
- Yampa : innovation en IA, souveraineté et sécurité au service des DSI
Articles les + lus
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
À la une de la chaîne Tech
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
