Lors de l'appel d'un programme partie centrale d'un canevas, les paves INIT PGM et INITIALISATION (d'une page) sont exécutés dans l'ordre suivant :

  1. INIT PGM et INITIALISATION du programme partie centrale,
  2.  INIT PGM et INITIALISATION des programmes parties (gauche, droite, haute et basse) suivant l'ordre d'interprétation du flux HTML généré par le canevas (une balise TABLE) par le navigateur. Chaque partie d'un canevas est contenu dans une balise TD de la balise TABLE et l'ordre d'interprétation des balises TD dépend de la position des parties les unes par rapport aux autres (coins inclus ou pas dans la définition du canevas).

Ces deux pavés peuvent être exécutés soit dans le cadre d'un événement Adélia classique soit dans le cadre d'un événement Adélia Ajax.

Lors du traitement d'un événement (classique ou Ajax) d'un programme partie d'un canevas (hors partie centrale), aucun de ces pavés n'est exécuté (sauf appel explicite à TRAITER_PGM, TRAITER, etc.)

Lors du traitement d'un événement (classique ou Ajax) du programme partie centrale, les pavés INIT PGM et INITIALISATION des programmes parties (gauche, droite, haute et basse) sont ré-exécutés (l'ordre est le même que dans le point 2. Dans ce cas précis, l'utilisateur peut vouloir ne pas ré-exécuter les instructions de ces pavés.

A l'heure actuelle (v11 PTF7), il n'est pas possible (dans le langage L4G) de distinguer l'exécution des pavés INIT PGM et INITIALISATION des programmes parties (gauche, droite, haute et basse) dans le cas du premier appel au programme partie centrale (création des instances de chaque programme constitutif du canevas) du cas d'exécution d'un événement du programme partie centrale.

A l'heure actuelle (v11 PTF7), il n'est pas possible (dans le langage L4G) de distinguer le type d'événement (classique ou Ajax) ayant déclenché l'exécution des pavés INIT PGM et INITIALISATION. Cependant, la première exécution de ces pavés est obligatoirement issue d'un événement classique (car utilisation de l'ordre TRAITER_PGM sur le programme partie centrale d’où chargement complet de la page). Les exécutions suivantes peuvent être issues d'un événement classique ou Ajax.
Cependant, il est possible d'utiliser une classe Java pour distinguer si l'exécution des pavés est issue d'un événement classique ou Ajax :

 

import javax.servlet.jsp.PageContext;
import javax.servlet.http.HttpServletRequest;
public class RequestHelper
{
public RequestHelper()
{
}
public static void isAjaxRequest (Object[] tabParam)
{
PageContext pc = (PageContext) tabParam[0];
if (((HttpServletRequest) pc.getRequest()).getHeader("X-AWS-Ajax") != null)
tabParam[1] = Boolean.TRUE;
else
tabParam[1] = Boolean.FALSE;
} 
}

 

Dans le code L4G, la méthode isAjaxRequest s'utilise via l'ordre APPELER_CLASS :

BOOL result
appeler_class 'RequestHelper' 'isAjaxRequest' *PAGE_CONTEXTE result

Result vaut *VRAI si le code exécuté est issu d'un événement Ajax, *FAUX si événement classique.


Articles connexes