2012-01-18 4 views
1

이 게시물에서 Dynamic ui:include 나는 같은 브라우저의 새 창이나 탭을로드 할 수있는 개체를 어떤 상태로 저장할 수 있으며 새 창에도 저장되지 않았는지 물어 보았습니다. Adrian Mitev는이라는 MyFaces 확장 프로그램의 옵션 인 CODI를 사용하라고 말했고 구현하려고했습니다.@WindowScoped에서 개체를 검색하려면 어떻게해야합니까?

이제 나는 눈이 멀었고 아파치 위키를 열려고했을 때 많은 페이지에서 브라우저가 다운되어 가이드를 읽을 수 없다고 말해야합니다.

그러나 프로젝트에 소스 코드를 추가하면 컴파일러에서 오류가 발생하지 않습니다. 문제는 지금 내가 @WindowScoped에 저장 한 콩을 다시 검색하려고 할 때 페이지가 제대로 작동하지 않는다는 것입니다. 나는이 코드를 사용하여 LogicBean 검색

<ui:include src="#{logicBean.pageIncluded}"/> 

그리고 내 다른 콩에 (그리고 : include.xhtml에서

@ManagedBean (name="logicBean") 
@WindowScoped 

는이 코드에 매개 변수를 검색 :

내 콩에이 코드를 사용 이 코드에 문제가 있다고 확신합니다.)

LogicBean l = (LogicBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("logicBean"); 

"올바른"LogicBean 객체를 다시 검색하려면 어떻게해야합니까?

답변

2

LoginBean을 세션 맵에서 가져 오려고합니다. 이는 표준 JSF @SessionScoped 주석이있는 세션 범위 Bean에서만 작동합니다.

다른 빈을 액세스하는 표준 방법은 검색 빈에서 @ManagedProperty을 사용하는 것입니다.

예.

@ManagedBean 
@RequestScoped 
public class OtherBean { 

    @ManagedProperty("#{logicBean}") 
    private LogicBean logicBean; 

    // Getter+Setter. 
} 

당신이 정말로 프로그래밍 EL을 평가하는 방법 블록 내부에 액세스해야하는 경우 대신 Application#evaluateExpressionGet()를 사용한다 :

BalusC @
FacesContext context = FacesContext.getCurrentInstance(); 
LogicBean logicBean = context.getApplication().evaluateExpressionGet(context, "#{logicBean}", LogicBean.class); 
// ... 
+0

: 대단히 감사합니다! 코드가 세션에서 오브젝트를 다시 찾았지만 어떻게 바꿀 수 있는지 알지 못했습니다! 다시 한 번 감사드립니다! – Filippo1980

+0

당신을 진심으로 환영합니다. – BalusC

관련 문제