0

我有一个HashMap<Long, ClientProperties>在启动时放在 ServletContext 上的东西。

//During application-startup:
//getProperties() returns HashMap<Long, ClientProperties>
context.setAttribute("clientProps", clientManager.getProperties());    

ClientProperties 是一个 POJO,具有我需要在我的 jsp 中访问的 5 个属性。基本上我需要获得正确的 POJO(通过 HashMap-key)并在我的 jsp 中访问它的属性。

更特别(例如目的),POJO 属性之一是clientLogo 在我的 jsp 中,我现在有: <img src="<c:url value='/images/logo.png'/>" alt="Logo">

我需要用 POJO 的 clientLogo-property 替换 logo-file 的路径。要使用的 HashMap-key 应该从存储在会话中的用户对象中提取。可以这样检索:${sessionScope['user'].clientId}

有任何想法吗?如果这很重要,请使用 struts2 和 spring btw。

4

1 回答 1

0

要从 servlet 上下文中获取属性foo,可以使用与从会话中获取属性相同的语法,但将 sessionScope 替换为 applicationScope。

但是你这里有很多嵌套的东西,你应该定义变量:

<c:set var="map" value="${applicationScope['clientProps']}"/>
<c:set var="mapKey" value="${sessionScope['user'].clientId}"/>
<c:set var="pojo" value="${map[mapKey]}"/>
<c:set var="clientLogo" value="${pojo.clientLogo}"/>

<c:url value="${clientLogo}"/>

请注意,这通常是您不应该在视图中进行的艰苦工作。在控制器中用 Java 实现图像路径的检索,并将其作为您的操作/表单的属性提供,并直接从您的视图中访问它。

于 2012-05-09T15:23:52.007 回答