如何在jsp / struts2中访问servlet-context?

时间:2012-05-09 14:27:53

标签: java jsp

我有一个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应该从存储在会话中的User-object中提取。它可以像这样检索:${sessionScope['user'].clientId}

有什么想法吗? 如果重要的话,使用struts2和spring btw。

1 个答案:

答案 0 :(得分:0)

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

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

<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在控制器中实现图像路径的检索,并使其可用作操作/表单的属性,并直接从视图中访问它。