[Résolu][Struts]Affichage de caractères spéciaux

Rom1
[Résolu][Struts]Affichage de caractères spéciaux

Bonjour à tous et à toutes

Je développe un jeu accessible depuis le wap en utilisant le framework struts.
Mon problème est que je n'arrive pas à afficher le caractère '<' dans mes jsp.
J'utilise la taglib struts pour le "stocker" et la balise bean:message pour l'afficher (avec l'attribut key).
J'ai aussi essayé en mettant directement son code: < mais rien n'y fait.

Si quelqu'un a une idée, ce serait sympa
Merci :D

Rom1

Personne ne sait ?
Se pourrait-il que ce soit un problème de tld par hasard ?

fredericmazue

tld je ne pense pas.
Si tu montrais le bout de code censé afficher <, on serait peut être plus inspiré pour te répondre

Rom1

Tout simplement:
<bean:message key="chevron.inferieur"/>

avec:
chevron.inferieur=<

:D

fredericmazue

Quote:
Tout simplement:

Ah ?
Quote:
chevron.inferieur=<

Normalement tu dois mettre
chevron.inferieur=<
et Struts te le converti en <
S'il ne le fait pas c'est que le problème est ailleurs. (Configuration ? Charset ?)

Tout simplement :D

Rom1

Oui tout simplement ^^ (ça ne diffère pas des explications de mon premier post ^^'), en tout cas merci de ta réponse rapide :wink:

J'avais déjà essayé en mettant directement '<' mais voilà l'erreur générée!

Quote:
Echec de lecture du XML: pas correctement formé (Ligne : 1, Caractère : 1227)
<?xml version="1.0"?>


</a>


Le chevron que je souhaite afficher est celui avant le "Accueil" ^^

Les JSP contiennent toutes ceci:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Elle ne devrait pas avoir d'influence sur le format de la page wml non ? Ce sont les seuls endroits où j'ai pu voir charset dans l'ensemble de l'appli (je viens de reprendre ce projet donc je suis encore loin de maitriser le code produit par l'ancienne équipe de développement !)

fredericmazue

Quote:
ça ne diffère pas des explications de mon premier post

En effet. Je n'ai donc pas pu t'aider beaucoup.

Quote:
<a href=url_de_la_page_visee><Accueil </a>

Ah mais là c'est clair. Enfin il me semble. Comme je dis toujours avec un peu de code on y voit toujours plus clair. Dans un premier temps Struts fait le boulot il met le <, et dans un deuxième temps tu as "quelque chose" qui interprète l'HTML produit. Il voit
< comme un tag mal formé dans le lien. Ca me paraît tout à fait normal comme réaction.
Je n'ai pas de vision globale claire de ton appli alors je dis quelque chose, mais l'idée y est je pense.

Moi j'abandonnerais l'idée de mettre < devant Accueil. Pourquoi se compliquer la vie ? Quand on voit un lien "Accueil", on comprend ce dont il s'agit.
Maintenant si tu le veux alors c'est bien
chevron.inferieur=<
Qu'il faut mettre. Si c'est fois ça ne marche pas, c'est peut être un *autre* problème. Peut être Struts refuse ces caractères, peut être il y a un problème d'encodage

Quote:
charset=UTF-8

C'est obligatoire d'utiliser ce bouzin ?
As tu fait un essai avec latin-1 pour voir ?

Quote:
je viens de reprendre ce projet donc je suis encore loin de maitriser le code produit par l'ancienne équipe de développement !

Je comprends bien.
Rom1

Aucune différence avec latin-1 ni avec ISO-8859-1 d'ailleurs :(

J'aimerais aussi perso retirer le chevron mais j'ai pas trop le choix (je dois me conformer à la charte Orange ... tout pour em****** leur monde lol)

chevron.inferieur=< ne me traduit pas le caractère (la page affiche < au lieu de '<'), vraiment ça doit être un truc tout bête pour régler ça (comme souvent) mais dont on pense en dernier

En tout cas merci de ton aide :wink:

K-lo

Heu une réponse inutile de ma part je pense mais on sait jamais

et ça chevron.inferieur='<'; ou mettre le code ascii?

fredericmazue

Quote:
J'aimerais aussi perso retirer le chevron mais j'ai pas trop le choix (je dois me conformer à la charte Orange ... tout pour em****** leur monde lol)

Je vois... :(
Par contre ce que je ne vois pas c'est ce que Java/Struts viennent faire chez Orange. Si j'en crois les URL ils sont toujours avec cgi. Serais je abusé à l'insu de mon plein gré ?

Quote:
ne me traduit pas le caractère (la page affiche < au lieu de '<'), vraiment ça doit être un truc tout bête pour régler ça (comme souvent) mais dont on pense en dernier

Les trucs tout bêtes sont en général les pires à détecter...
*Qui* ne traduit pas ?
Si tu as < dans la page, alors Struts a fait son boulot, à priori correctement et c'est le navigateur qui ne traduit pas. C'est donc de ce côté qu'il faut chercher. Il doit y avoir un détail qui le dérange. Peut être un retour chariot (au sens ascii du terme) ou je ne sais quoi. Je ne te cache pas que je voudrais bien voir un peu du code HTML produit, en amont et en aval du problème.
As tu essayé avec d'autres navigateurs au fait ?

Rom1

@K-lo: toute solution est bonne à prendre surtout quand elle apporte la solution :lol:
En mettant le code ISO de '<' (regarder une table avec les codes ascii/HTML/ISO m'a apporté le bon code), ça marche nickel, je n'y avais pas pensé (surtout utiliser ce genre de code pour une appli sous téléphone portable) merci

@fredericmazue: en fait je développe une appli (un jeu) accessible depuis le wap (via des pages jsp). Cette appli sera accessible depuis la Gallery Orange (leur portail Wap) d'où la charte d'ergonomie à respecter (et donc l'histoire du fameux chevron)
Pour ce qui est de Java, les téléphones portables comprennent tous une plate-forme Java (ou presque je suppose ^^) d'où l'utilisation du langage, ensuite pour Struts ... c'est un choix d'il y a un an et demi (avec l'ancienne équipe de projet). Je me pose pas trop de question là-dessus, peut-être aurait-il mieux valu employer un framework du genre JSF mais bon faut faire avec :P

En tout cas merci de vous être dérangés pour moi (c'est pas le cas de tous les forums !!!) :wink:

fredericmazue

Merci pour les infos sur l'appli, c'est toujours intéressant de savoir. :)

Je suis heureux que ton problème soit solutionné. Mais je dois dire que j'aime bien comprendre les choses. Donc si je comprends bien, tu as suivi la suggestion de k-lo et tu as mis:

< au lieu de <

Cela n'explique pas pourquoi ça ne marche pas avec < qui est pourtant bel et bien correct, je viens de vérifier dans les spécifications du WML.
Alors je renouvelle ma demande si ça t'es encore possible sans te causer trop de dérangement: je voudrais bien voir le code HTML/WML produit quand tu mets chevron.inferieur=< parce qu'en toute sincérité il y a quelque chose qui m'échappe, et je n'aime pas ça :evil:

Quote:
En tout cas merci de vous être dérangés pour moi (c'est pas le cas de tous les forums !!!)

Reviens nous voir quuand tu veux :)
K-lo

Quote:
Je suis heureux que ton problème soit solutionné. Mais je dois dire que j'aime bien comprendre les choses. Donc si je comprends bien, tu as suivi la suggestion de k-lo et tu as mis:

Code:
< au lieu de <


ça serait pas plutôt
chevron.inferieur='0x3C'; 
chevron.inferieur='&# 60';

//sur le forum ça l'a converti directement d'ou l'espace :D entre le '#' et le '6' mais en réalité l'espace n'est pas a mettre.

PS : Pour moi chevron.inferieur=< ne peut pas fonctionner car le ';' fait parti du code '<' or là il l'a peut etre pris comme fin d'instruction

donc le < doit bien fonctionner mais avec un délimiteur... :?:

fredericmazue

Quote:
sur le forum ça l'a converti directement d'ou l'espace

Ah :!: :lol: Lol. j'ai pas fait gaffe.
Oui j'avais écrit '&# 60'; sans l'espace. Oups! :oops:

Quote:
PS : Pour moi chevron.inferieur=< ne peut pas fonctionner car le ';' fait parti du code '<' or là il l'a peut etre pris comme fin d'instruction

Non. Enfin je ne pense pas. Parce que telles qu'il a présenté les choses et vu qu'il travaille avec Struts son chevron.inferieur=< ne fait pas partie d'un bout de code, mais est une simple phrase dans un fichier de ressources. C'est du moins ce que j'avais compris
Rom1

fredericmazue wrote:

Quote:
PS : Pour moi chevron.inferieur=< ne peut pas fonctionner car le ';' fait parti du code '<' or là il l'a peut etre pris comme fin d'instruction

Non. Enfin je ne pense pas. Parce que telles qu'il a présenté les choses et vu qu'il travaille avec Struts son chevron.inferieur=< ne fait pas partie d'un bout de code, mais est une simple phrase dans un fichier de ressources. C'est du moins ce que j'avais compris

Oui c'est bien ça, le symbole < était inscrit dans le fichier de ressources tel quel (et maintenant c'est '&# 60;'), le délimiteur est la fin de ligne :D

Sinon voilà le code généré avec '<' dans les ressources:

<a href="http://www.orange.fr/0/accueil/Retour?SA=GEKIOSQUE">
    &# 38;lt&# 59;Accueil Gallery
</a>

J'ai mis bien sur mis des espaces pour '&# 38;' et '&# 59;' et comme vous pouvez le voir, il n'y a que 'lt' d'affiché :?:
Après vérification de la table ISO, l'appli traduit les caractères '&' et ';' :/
fredericmazue

Quote:
J'ai mis bien sur mis des espaces pour '&# 38;' et '&# 59;' et comme vous pouvez le voir, il n'y a que 'lt' d'affiché
Après vérification de la table ISO, l'appli traduit les caractères '&' et ';' :/

Bon ça explique en partie les choses. Struts est facétieux.
Mais ça n'explique pas tout. Pourquoi & est il retiré lorsqu'il y a < et qu'il n'est pas retiré lorsqu'il y a &# 60 ? Même remarque pour le ; d'ailleurs.
Soit il y a une finesse dans la configuration de struts, soit ça déconne ferme dans l'usine à gaz.

Merci pour les infos :)