Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/06/2003, 17h41   #1
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Par défaut Modifications framework

J'ai été obligé de modifier le framework pour mon appli, et évidemment, cela pose pas mal de pbs lors de release XMLRAD. Je voudrais vous les soumettre afin de me dire si une solution e-delos existe (et je modifierai mon code) ou si mon code pourrait être implémenté dans la version de base :

- HTTP/HTTPS (concerne le XSLC.XSL) : ce code a été ajouté au xslc:page, ce qui pose évidemment des pb en https ... je l'ai supprimé et cela fonctionne bien :
<base href="http://{/document/XMLC_Params/XMLC_Host}{/document/XMLC_Params/XMLC_ScriptName}/"/>

- Header HTTP : dans un environnement https, j'ai besoin de récupérer la balise CERT_SUBJECT pour m'identifier sur un annuaire LDAP, j'ai du effectuer une modif dans xmlapp.pas fonction (InternalDispatchRequest/Initxmlrequest) :
Context.SetValue('Request.User',Request.GetFieldByName('CERT_SUBJECT'));

- Gestion du séparateur de décimales : afin de gérer le . ou la , à tous les coups (cette fonctionnalité n'est pas opérationnelle à 100% dans la base), j'ai dû ajouter dans xmlgram.pas (fillparams) :
if (ParamType = 'FLOAT') or (ParamType = 'INTEGER') then
begin
{$IFDEF NATIVE}
if SysUtils.DecimalSeparator = '.' then
ParamValue := StringReplace(ParamValue,',','.',[rfReplaceAll])
else
ParamValue := StringReplace(ParamValue,'.',',',[rfReplaceAll]);
if ParamValue = '' then ParamValue := '0';
ParamValue := FloatToStr(StrToFloat(ParamValue));
{$ENDIF}
{$IFDEF CLR}
{$ENDIF}
end;
La même chose a été ajoutée dans dac.pas (Batch) car dans le cas d'éxécution d'une requête stockée dans les Queries, aucun test de type de paramètre n'est fait.

- Et la dernière qui est certainement + spécifique. Lors d'une exception (date invalide, erreur BDD, ..) je dois remonter à l'utilisateur un message 'humain', et pas le message brut de la base. J'ai donc modifié le xmlapp.pas afin de rajouter dans le contexte un type d'erreur perso en fonction du message reçu. Un peu comme E-delos, mais j'ai besoin de conserver le message d'origine afin de l'afficher en dessous et surtout de le conserver dans les logs.

Si quelqu'un pouvait m'enlever quelques codes à conserver au coffre, cela me simplifierait bien la vie.
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2003, 19h18   #2
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
Par défaut Re: Modifications framework

Citation:
Envoyé par rgarnier
- HTTP/HTTPS (concerne le XSLC.XSL) : ce code a été ajouté au xslc:page, ce qui pose évidemment des pb en https ... je l'ai supprimé et cela fonctionne bien :
<base href="http://{/document/XMLC_Params/XMLC_Host}{/document/XMLC_Params/XMLC_ScriptName}/"/>
Le base href est utilisé pour les contenus d'EMail (EMail this page) pour que les images s'affichent. On remonte l'info, mais je sais pas comment ca va etre corrigé pour prendre en compte ca.

Citation:
- Header HTTP : dans un environnement https, j'ai besoin de récupérer la balise CERT_SUBJECT
Info remonté, je pense que ce sera intégré directement. (prochain build)


Citation:
- Gestion du séparateur de décimales :
Ce n'est pas correct ce que tu as rajouté. Tu ne prend pas en compte la culture. Dans les dernières version (RC3) le séparateur décimal est pris en compte. Il doit exister peut etre encore des comportements liés à la concurrence (changement du SysUtils.DecimalSeparator à la volée).

Citation:
- Et la dernière qui est certainement + spécifique. Lors d'une exception (date invalide, erreur BDD, ..).
autant gérer ca dans le HandleException, puisque a priori on ne connait pas le texte exact.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2003, 07h54   #3
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Ok, merci.
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2003, 09h43   #4
Membre régulier
 
Inscription : janvier 2003
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 85
Points : 92
Points : 92
RDM a déjà répondu a toutes tes questions. Cependant pour ta dernière question, j'ai peut-être quelques éléments de réponse à te donner.

Citation:
Envoyé par rgarnier
Et la dernière qui est certainement + spécifique. Lors d'une exception (date invalide, erreur BDD, ..) je dois remonter à l'utilisateur un message 'humain', et pas le message brut de la base. J'ai donc modifié le xmlapp.pas afin de rajouter dans le contexte un type d'erreur perso en fonction du message reçu. Un peu comme E-delos, mais j'ai besoin de conserver le message d'origine afin de l'afficher en dessous et surtout de le conserver dans les logs.
Pour cela, tu peux utiliser les ApplicationMessages (c'est la petite icône représentée par un drapeau US/FR dans XMLRAD). Il y a trois types d'ApplicationMessage : INFO, WARNING, ERROR. Ils permettent de localiser les messages de ton application.

Rajoutes y par exemple l'ApplicationMessage DATE_INVALIDE, qui contient le message quand une date est invalide.

Ensuite, en fonction de tes exceptions, il te suffit de mettre dans le Context, le nom de ton ApplicationMessage adéquat :

Code :
1
2
3
Context.SetValue('XMLC_Info', 'DATE_INVALIDE'); // Message d'info
Context.SetValue('XMLC_Warning', 'DATE_INVALIDE'); // Message d'avertissement
Context.SetValue('XMLC_Exception', 'DATE_INVALIDE'); // Message d'erreur
Il faut alors que tu gères toi même l'Exception (OnException, variable Handled à True) pour que l'utilisateur se retrouve sur une page d'un XMLService et non pas celle d'une exception. Normalement le message s'affichera tout seul, grâce au composant XSL inclue de base dans les Wizards : <xsl:call-template name="xslc:ApplicationMessages/>.

J'espère t'avoir donné qques éléments de réponse intéressants..

A+
__________________
Julien C.
Julien C. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2003, 17h52   #5
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
C'est interressant, mais cela m'oblige à ajouter dans chacun de mes xmlservices le lancement d'ne fonction d'analyse des erreurs.

Vu que je suis partisan du moindre effort, ne pourrais-je pas ajouter cette fonction sur un onexception global à l'appli (car j'ai une bonne 100aine de xmlservices à modifier et je pourrais oublier de rajouter ce code lors des prochaines créations).
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2003, 18h08   #6
Membre régulier
 
Inscription : janvier 2003
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 85
Points : 92
Points : 92
A ma connaissance il n'y a pas d'évènement OnException global à l'application. D'ailleurs, il ne semble pas y en avoir pour les XMLModules également. Ca pourrait être utile en effet...

Anyway, là, il faut que tu modifies le Framework je pense pour faire ce que tu veux, au niveau du HandleException comme te l'as dit RDM.
__________________
Julien C.
Julien C. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h53.


 
 
 
 
Partenaires

Hébergement Web