Gus06 : Framework de développement Java

Accueil Documentation Base de connaissances Article : Gus Script : contrôler la sortie du script
Article rédigé par gus le 22/02/2016 pour le projet Moteur de script Gus


La balise output

La balise output est utilisée pour modifier la sortie du script de diverses manières. Elle permet par exemple de l'activer ou de la désactiver, mais aussi d'y ajouter des filtres (des objets de transformation textuelle) qui vont permettre de contrôler chaque string envoyée vers la sortie (formattage, filtrage, traçage...). L'exemple ci-dessous vous donne un petit aperçu des possibilités offertes par cette balises.

 

Comment altérer spécifiquement les balises print et les zones de texte

Le script peut imprimer du texte vers la sortie soit au moyen de la balise d'impression (print p ou >), soit au moyen des zones de texte entre les balises (c'est le principe des templates), et il peut être intéressant d'appliquer des filtres spécifiques à l'un ou l'autre de ces moyens.

La balise output interagit directement avec la sortie et ne peut pas distinguer une impression issue d'une zone de texte d'une impression issue d'une balise print, mais il existe une autre approche : paramétrer dans le contexte des variables trans_print et trans_textarea avec des transformations textuelles qui s'appliqueront à l'un ou l'autre des cas.

Dans l'exemple suivant, nous faisons en sorte que les impressions issues de la balise print soient entourées de crochets [ ] et les impressions issues de zone de texte entourées de parenthèses ( ).

 

Rediriger la sortie vers un autre objet d'impression

Il est souvent utile de rediriger (temporairement ou pas) la sortie vers autre chose (un fichier, un PrintStream, un StringBuffer, un simple objet P...). Ceci est rendu possible par la balise structurelle redirect qui prend un paramètre l'objet concerné. Ainsi, tout ce qui est imprimé à l'intérieur de la structure redirect, que ce soit au moyen de zones de texte ou de balises print, est redirigé vers la nouvelle sortie.

Bien évidemment, ce mécanisme est souvent utilisé avec un fichier, mais pas que... Voici un petit exemple qui imprime "coucou" à l'intérieur d'un StringBuffer.

On notera que ce mécanisme est aussi disponible sous forme d'option dans les autres balises (bloc, include, if, while...)

 

Application : se prémunir des injections HTML

Un problème classique dans la sécurité des sites web est l'injection de code malveillant dû à l'inclusion de variable dans du code interprété, qu'il s'agisse d'ailleurs de HTML, de JavaScript ou de SQL. L'exemple ci-dessous explique comme empêcher les injections HTML en altérant les balises print.