2012-05-09 3 views
0

HashMap<Long, ClientProperties> 내가 시작할 때 ServletContext를 사용하고 있습니다.jsp/struts2에서 servlet-context에 액세스하는 방법은 무엇입니까?

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

ClientProperties는 내 jsp에서 액세스해야하는 5 가지 특성이있는 POJO입니다. 기본적으로 올바른 POJO (HashMap 키로)를 가져와 내 jsp에서 해당 속성에 액세스해야합니다.

더 spesific (예 : 목적)는 POJO 중 하나는 속성 내 JSP에서 clientLogo 내가 지금 가지고있는 : <img src="<c:url value='/images/logo.png'/>" alt="Logo">

내가의 clientLogo-속성을 사용하여 로고 파일의 경로를 교체해야 POJO. 사용할 HashMap 키는 세션에 저장된 User 개체에서 추출해야합니다. 다음과 같이 검색 할 수 있습니다. ${sessionScope['user'].clientId}

아이디어가 있으십니까? struts2와 spring btw를 사용하는 것이 중요합니다.

답변

0

서블릿 컨텍스트에서 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로 구현하고 작업/양식의 속성으로 사용할 수있게 만들고보기에서 직접 액세스 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 매우 도움이된다! 보기에서 그것을 수행하는 이유는 이것이 sitemesh로 장식 된 header.jsp이기 때문입니다. header.jsp가 struts-action-properties에 액세스 할 수 있습니까? – user829237

+0

왜 그렇게 할 수 없었는지 모르겠습니다. Struts2에 대한 많은 경험이 없으며 앱 구성 방법을 알지 못합니다. –

관련 문제