JSTL使用动态变量名重写值

时间:2013-03-14 23:35:24

标签: jsp jstl

我有一种情况,我在一个页面的会话中设置一个图像的链接,在另一个页面上访问,这里是设置的地方:

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

我无法将此信息用于第二页,我想做类似的事情,但语法显然是关闭的,我不知道如何正确地执行此操作

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

catalogEntryId在两个页面之间是通用的,我只需要知道在从会话中检索变量时如何包含它

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

试试这个。我认为它会起作用

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

答案 1 :(得分:0)

这是不可能的。我认为您的问题的解决方案是使用一个Map,其中包含catalogEntryId作为键,item作为值。如果您的servlet /控制器中有itemList,您可以使用以下内容将其转换为map:

// 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())));

因此,您可以在视图中使用此地图,并从地图中获取动态密钥,如上所述:

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