2012-11-20 2 views
6

서블릿 내부의 뷰 범위 관리 Bean에 액세스하고 싶습니다. Servlet에서 @ViewScoped 관리 빈에 액세스하는 방법은 무엇입니까?

나는 비슷한 질문을 검색하고 이러한 것들을 가지고 : 다른 모든 범위를 취급하지만 viewscope하지 널 결과

JSF - get managed bean by name를 제공해야하기 때문에 서블릿 내부에 적용 할 FacesContext.getCurrentInstance()를 사용

how to get beans from view scope

나는 그것이 불가능하다고 생각할 것입니다, 그렇죠?

빈 범위를 세션 범위로 변경하는 간단한 해결책이 있지만 메모리 소비가 걱정되므로 마지막 기회입니다.

내 마지막 필요는 다음과 같습니다. managebean은 dataTable에 표시된 일부 데이터를 포함합니다. 동일한 페이지에는 해당 데이터의 차트 표현 이미지 (필수)가 포함되어야합니다. 이미지는 Servlet에 의해 생성 될 수 있지만 데이터에 액세스하거나 db에서 다시로드해야합니다.

또한 PrimeFaces 2.X에서 <p:graphicImage>을 시도했지만 viewscope beans와 호환되지 않습니다. 어떠한 제안?

답변

6

그건 불가능합니다. 뷰 범위는 특정 JSF 뷰와 관련이 있으며 이는 일반 HTTP 서블릿 요청의 수단이 아닙니다. 일반 HTTP 서블릿 요청 중에 구체적인 요청 범위가 지정된 Bean에 액세스 할 수 없으며 항상 null을 반환합니다.

세션 범위가 가장 좋습니다. 일단 서블릿에서 속성을 끝내면 세션 범위에서 속성을 제거 할 수 있습니다.

session.removeAttribute("somename"); 
+0

JSF와 관련된 질문이있는 곳이면 어디든지 당신을 의지 할 수 있습니다. 감사합니다 – Filippo

+0

당신은 환영합니다 :) – BalusC

+0

> BalusC는 말했습니다 : "일반 HTTP 서블릿 요청 중에 구체 요청 범위 콩에 액세스 할 수 없다는 것에주의하십시오 ..."이유를 설명해 주시겠습니까? 감사. –