Comment convertir un objet arbitraire en String avec EL + JSTL? (appelant toString ())
Est-il possible d'appeler toString() sur un objet avec le EL et JSTL? (J'ai besoin de la représentation sous forme de Chaîne d'un enum comme indice d'une carte dans une page JSP EL expression.) J'espérais quelque chose comme ${''+object}
fonctionnerait comme en java, mais EL n'est pas que belle, et il ne semble pas être une fonction qui le fait.
Précisions: j'ai une variable somemap
que les cartes de Chaînes à la les Chaînes, et que j'ai une variable someenum
qui est une énumération. J'aimerais faire quelque chose comme ${somemap[someenum.toString()]}
. (Bien entendu .toString() ne fonctionne pas, mais qu'est-ce?)
source d'informationauteur Hans-Peter Störr | 2010-05-21
Vous devez vous connecter pour publier un commentaire.
Vous venez de le faire comme ceci:
Et il va
toString
pour vous.modifier: Votre expression imbriquée peut être résolu comme ceci:
La première ligne stringifies (à l'aide de
toString()
) le${someenum}
expression et la stocke dans lemyValue
variable. La deuxième ligne utilisemyValue
à l'index de la carte.Couple de choses que vous pouvez faire.
Vous pouvez utiliser c:set -
Une autre chose que vous pouvez faire est de créer votre propre EL fonction, de l'appeler toString, puis appel que JSTL. EL les fonctions sont essentiellement des méthodes statiques accroché avec un taglib fichier. Simple à faire.
Edit:
Vraiment? Avez-vous fait, vous savez, l'essayer?
Et JSP 2.0 tagfile et JSTL fonctions sont triviales.
Je pense que dans les nouvelles versions de l'api JSP, vous pouvez appeler les méthodes, même avec des paramètres!
J'ai juste essayé de
${statusColorMap[jobExecution.exitStatus.toString()]}
et il fonctionne très bien!La réponse de la Volonté Hartung devrait fonctionner. Voici une copie n " coller'n'runnable SSCCE:
Cela donne:
(scriptlets sont juste pour le prototypage rapide, ne les utilisez pas dans la vraie!)
Comme skaffman ditEL syntaxe
${obj}
appelleratoString()
.Donc, si un objet
foo
dansJSTL
est une instance deFoo
.Ensuite,
Exemple
Si
toString()
sortieJSON
chaîne de format, par exemple,Foo
'stoString()
sortiesJSON
chaîne de format. alors: