2010-05-17 14 views
1

Est-il possible d'évaluer une chaîne en tant qu'expression EL dans JSP et en tirer une valeur?Évaluation d'expression JSTL à partir d'une chaîne

J'ai besoin d'une expression comme ${model.${fieldPath}} où fieldPath contiendra le chemin d'accès requis à partir d'un modèle objet imbriqué.

je peux obtenir le chemin de champ réel à l'aide, mais je ne suis pas sûr de savoir comment évaluer une chaîne et obtenir la valeur de celui-ci

Toute aide concernant ce serait très apprécié.

+0

Ce n'est pas JSTL. C'est EL (langage d'expression). JSTL a taglib comme indiqué ici: http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/ J'ai supprimé la balise JSTL. – BalusC

Répondre

2

Je ne suis pas sûr d'avoir compris correctement, mais je pense que vous avez juste besoin cette expression:

${model[fieldPath]} 

Dans opérateur point EL et [] abonnement sont fondamentalement les mêmes: une syntaxe différente, mais le même accès.

+0

Merci pour votre réponse. Mais dans notre cas, la valeur "fieldPath" pointait vers une structure complexe comme "matrixAssumptions [suppositionId] .data [rowName] .data [matrixColumns [0]]. Pourcentage". Lorsque j'essaie d'utiliser [] à la place du point EL, il ne peut pas trouver ce champ dans l'objet et déclenche une exception. – Venkatesh

+0

@Venkatesh: Quelle exception spécifiquement? Vous devriez pouvoir mettre toute l'expression entre crochets dans '$ {model [...]}' si elle donne un nom de propriété valide (valide pour '$ {model}', c'est-à-dire). – doublep

+0

Je cherche aussi une réponse ici. Si fieldPath = "mycollection [5]", $ {model ['mycollection [5]']} ne fonctionne pas, en raison des crochets imbriqués, mais $ {model.mycollection [5]} fonctionne. – thetoolman

1

<c:set var="fieldPath" value="${fieldPath}" /> ${model.get(fieldPath)}