2017-08-14 4 views
-1

Je suis mise à niveau une application de entretoises 2.1 aux entretoises 2.3.23 mais j'ai une étrange erreur avec la nouvelle version ... je dans mon JSP le code suivant:Struts2 getText renvoie un nombre?

<span id="n1"><s:text name="%{getText('prod_n1')}"/></span> 

Et dans mes propriétés fichier:

prod_n1=N-1 

Pour certaines raisons, cela me donne en sortie "-1.0" ...

Si je remplace "N-1" par "foo", alors ma sortie est "foo" comme attendu. Il ressemble à la méthode getText voir "N-1" comme un nombre! Une idée sur la façon de le réparer?

+0

'' est pour i18n. –

Répondre

0

Après plus d'investigations, je peux reproduire ce bug sur une page blanche, cela se produit uniquement avec la combinaison de l'appel de getText à l'intérieur d'un tag <s:text/>. Dans cette configuration, la sortie est toujours un nombre si la chaîne d'entrée commence ou se termine par un nombre et ne contient aucun espace. Cela se produit non seulement avec les fichiers de propriétés, mais aussi avec n'importe quelle entrée (comme les variables de session). J'ai jeté un oeil au code Struts2 et je pense que c'est quelque chose avec la façon d'extraire le texte qui conduit à considérer l'entrée comme un flottant.

Alors, essayez de ne pas utiliser cette méthode dans une balise « texte » ...

0

Le résultat de getText('prod_n1') retournera N - 1 comme prévu.

Ensuite, un résultat est utilisé par la balise comme OGNL qui est analysé, et il est évalué à -1.0 s'il y a une N clé dans la valueStack qui a une valeur flottante 0. Cette clé est ensuite utilisée pour trouver la valeur dans le fichier de propriétés.

Étant donné que cette clé -1.0 n'est pas trouvée, la clé est imprimée.