ATTENTION : Tutorial en cours d'écriture ! N'hésitez pas à nous signaler toute erreur ou suggestion.
Accès rapide :
Les différentes étapes du cycle de vie
Ellipse mérite son titre de "framework" : il ne s'agit pas d'une simple librairie de développement d'applications Web, mais bien d'un système de développement d'applications Web imposant un cadre de programmation fort. Parmi les différents points imposés par ce framework, citons notamment le cycle de vie d'une page web. Ce cycle de vie impose l'invocation de méthodes particulières à des moments forts du cycle de traitement de la page Web. Le diagramme ci-dessous tente de synthétiser ce cycle de vie.
Afin de mieux comprendre les choses, nous allons maintenant reprendre un à un ces différents points du cycle de vie d'une page Ellipse.
corelib.services.web.webapplications.WebPage).
Il est non conseillé d'utiliser le constructeur : à ce stade, l'objet n'est pas encore lié au fichier de définition de la page Web (extension .wp).
<include file="partOfPage.wp" />). L'inclusion est en
réalité prise en charge en fusionnant les différents DOM (Document Object Model), pour n'avoir au final qu'un unique DOM représentant la page Web Ellipse
complète. La fusion est obtenue en clonant simplement les tags XML, à l'identique, dans la page principale.
<corelib.services.web.components.Button />).
Le framework Ellipse cherche aussi à injecter les attributs des tags de composants WEB dans les attributs de vos instances de composants Web en se basant sur
le modèle JavaBeans.
corelib.services.web.webapplications.DataRepeater (les répétiteurs de composants Web),
on cherche à cloner les composants Web qu'ils contiennent. De manière standard, les répétiteurs de composants sont liés à des données en session
ou stockées dans l'application. Pour tous les composants dupliqués, les identifiants des composants Web (propriété id) sont modifiés
de manière à garantir l'unicité de chacun d'eux (l'indice de répétition leur est adjoint).
component_init est invoquée sur chacun des composants Web. Attention : à ce stade là vous n'avez pas encore accès au données
liées (via le Data Binding), ni aux données soumises par l'intermédiaire d'un formulaire (sauf, bien entendu, par l'intermédiaire de l'objet request -
javax.servlet.http.HttpServletRequest).
page_init est invoquée sur votre page Web. Attention : à ce stade là vous n'avez pas encore accès au données liées (via le
Data Binding), ni aux données soumises par l'intermédiaire d'un formulaire (sauf bien entendu par l'intermédiaire de l'objet request -
javax.servlet.http.HttpServletRequest).
component_load est invoquée sur chacun des composants Web.
page_load est ensuite invoquée sur la page. Conventionnellement, c'est dans cette méthode que vous codez l'enregistrement des
écouteurs (des listeners) sur les composants Web de la page (modèle événementiel proposé par le framework).
WebComponentEventLevel.FIRST, BEFORE, DEFAULT, AFTER et
LAST).
page_preRender est invoquée sur la page Web considérée. Si quelques derniers ajustements sont nécessaires il vous est encore
possible de réagir.
page_render est invoquée. Elle à pour responsabilité de cascader la demande de génération de flux HTML sur le tag
racine du DOM et son composant Web associé (normalement le composant <web:Html>).
component_preRender est invoquée sur un composant pour l'informer qu'il est sur le point d'être sollicité pour prendre en
charge son rendu visuel.
component_renderBegin doit générer le code HTML associé au tag ouvrant du composant Web considéré.
component_renderChildren doit générer le code HTML associé au contenu des sous-composants Web considérés. Il n'est pas
forcément nécessaire de recoder cette méthode. Son implémentation au sein de la classe VisualComponent suffira dans la majorité des cas. Dans le cas
ou le composant contient des sous-composants Web, l'implémentation par défaut repasse la main aux méthodes component_preRender,
component_renderBegin, component_renderChildren, component_renderEnd et component_postRender, et
cela pour tous les sous-composants.
component_renderEnd doit générer le code HTML associé au tag fermant du composant Web considéré.
component_postRender est invoquée pour signaler au composant Web considéré, que son travail de génération du flux HTML est
terminé.
page_postRender est invoquée pour indiquer que la génération du flux HTML associée à la page Web est terminée.
finalize pourra donc être utilisée.
|
|
|||||||