2012-04-23 10 views
3

나는 @Viewscoped beans를 JSF 2.1 프로젝트에서 사용하고있다. 이상한 점은 처음 페이지를 만들 때 bean이 모든 초기 매개 변수로 명확하게 초기화된다는 것입니다. 하지만 다른 페이지로 이동하면 테 브라우저가 열려있는 브라우저 탭을 닫더라도 콩이 죽지 않습니다. 이 빈을 사용하는 페이지로 돌아 가면 값은이 페이지의 사용 중에 수정 된 값과 동일합니다. 그리고 IE 나 Chrome과 같은 다른 브라우저를 열면 값도 계속 유지됩니다. sessionscoped처럼 작동합니다. 또는 inmortal bean의 일부, je.@viewscoped bean은 다른 페이지로 이동할 때 파괴되지 않는다.

빈은 이와 같이 주석 처리됩니다.

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 
import org.springframework.stereotype.Controller; 

@Controller 
@ManagedBean 
@ViewScoped 

public class MyBean { 
    //the rest of the code. 
} 

왜 이런 일이 발생합니까? springframework 주석이 문제의 원인 일 수 있습니까?

답변

1

해결책을 찾았습니다. 문제는 콩에서의 스프링 주석이었습니다. 스프링 프레임 워크의 @Controller을 사용합니다. 이 주석은 싱글 톤을 생성하기 때문에 내 백킹 빈은 심지어 @ManagedBean@ViewScoped을 가지며 한 번만 생성되며 모든 뷰에서 다시 만들어지지 않아 파괴되지 않았습니다. @Controller을 삭제하고 @ManagedProperty의 경우 @Autowired을 주사로 대체하면 모든 것이 예상대로 작동합니다.

a question 도움말 대답이 잘

@ViewScoped 
public @Named class MyBean 

@PreDestroy 작품을 anotations 사용하여 Bean을

-2

을 정의 알아낼 수 있습니다.