2 votes

JSTL reprenant une valeur avec un nom de variable dynamique

Je suis dans une situation où je configure un lien vers une image dans la session d'une page pour qu'elle soit accessible sur une autre page, voici où il est configuré :

<c:set var="<%item.getCatalogEntryId()%>FTImage" value="${item.field5}" scope="session"/>

J'ai du mal à tirer cette information pour l'utiliser sur la deuxième page, je veux faire quelque chose comme ça, mais la syntaxe est manifestement incorrecte et je ne suis pas sûr de savoir comment faire correctement ceci

<c:set var="CartImage" value="${sessionScope.${itemCatentryId}FTImage}"></c:set>

Le catalogEntryId sera commun aux deux pages, j'ai juste besoin de savoir comment l'inclure lors de la récupération de la variable à partir de la session.

Merci pour toute aide

0voto

PSR Points 14768

Essayez ceci. Je pense que ça va marcher

 <c:set var="CartImage" value="${sessionScope.[itemCatentryId]FTImage}"></c:set>

0voto

Ce n'est pas possible. Je pense qu'une solution à votre problème est d'utiliser une Map qui contiendra les éléments suivants catalogEntryId comme clé et le item comme valeur. Dans le cas où vous avez un itemList dans votre servlet/contrôleur, vous pourriez le transformer en carte en utilisant quelque chose comme ceci :

// Servlet.
request.setAttribute("itemMap", itemList.stream().collect(Collectors.toMap(i-> String.valueOf(i.getCatalogEntryId()) + "FTImage", Function.identity())));
// Spring MVC Controller.
modelAndView.addObject("itemMap", itemList.stream().collect(Collectors.toMap(i-> String.valueOf(i.getCatalogEntryId()) + "FTImage", Function.identity())));

Ainsi, vous pourrez utiliser cette carte dans vos vues et obtenir une clé dynamique de votre carte comme ci-dessus :

<c:set var="CartImage" value="${itemMap.get(item.getCatalogEntryId()+'FTImage')}" value="${your value}"></c:set>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X