내 관리 Bean의 특정 메소드가 호출 될 때 JSF 라이프 사이클의 복원보기 단계에 있는지를 알고 싶습니다. 어떻게해야합니까?JSF : "복원보기"단계에 있는지 여부를 어떻게 확인할 수 있습니까?
4
A
답변
12
당신이 JSF 2.0에 이미있는 경우에, 당신은 FacesContext#getCurrentPhaseId()
를 사용하여 확인할 수 있습니다
if (FacesContext.getCurrentInstance().getCurrentPhaseId() == PhaseId.RESTORE_VIEW) {
// Restore view called.
}
을하지만 아직 JSF 1.x에서에 아직도 있다면, 당신의 가장 좋은 리조트는 PhaseListener
를 사용하는 수신 대기 : PhaseId.RESTORE_VIEW
, beforePhase()
동안 요청 범위에 플래그/토글/토큰을 설정하고 afterPhase()
동안이 토큰을 제거합니다. Bean의 getter 메소드가 요청 범위에서 그 존재를 검사하게한다.
그렇다면 정확히 무엇을 필요로합니까? 나는 그러한 기능적 요구 사항에 대한 필요성을 결코 갖지 못했습니다. bean의 생성자 또는 @PostConstruct
주석이 달린 메서드가 아마도 이런 초기화 작업을 수행하기에 더 좋은 곳이 아닌가?
관련 문제
- 1. UIScrollView의 특정 프레임에 하위보기가 있는지 여부를 어떻게 확인할 수 있습니까?
- 2. 테이블에 인덱스가 있는지 여부를 어떻게 확인할 수 있습니까?
- 3. Windows에서 특정 파일이 열려 있는지 여부를 어떻게 확인할 수 있습니까?
- 4. 브라우저 창/탭에 포커스가 있는지 여부를 어떻게 확인할 수 있습니까?
- 5. 브라우저 창에 포커스가 있는지 여부를 어떻게 확인할 수 있습니까?
- 6. 단어가 사전에 있는지 여부를 어떻게 확인할 수 있습니까?
- 7. git 리포지토리에 커밋이 있는지 여부를 어떻게 확인할 수 있습니까?
- 8. 내가 맨 위 프레임에 있는지 여부를 어떻게 확인할 수 있습니까?
- 9. 스크롤바가 보이는지 여부를 어떻게 확인할 수 있습니까?
- 10. 코드가 벡터화되었는지 여부를 어떻게 확인할 수 있습니까?
- 11. 마이크에 입력이 있는지 여부를 확인할 방법이 있습니까?
- 12. 파일이 있는지 어떻게 확인할 수 있습니까?
- 13. 변수가 있는지 어떻게 확인할 수 있습니까?
- 14. 이 헤더가 있는지 어떻게 확인할 수 있습니까?
- 15. 뷰가 데이터베이스에 있는지 어떻게 확인할 수 있습니까?
- 16. MSBuild : 프로세스가 있는지 어떻게 확인할 수 있습니까?
- 17. scp를 사용할 수 있는지 어떻게 확인할 수 있습니까?
- 18. Outlook 폴더가 공용 폴더인지 여부를 어떻게 확인할 수 있습니까?
- 19. 연결된 SQL Server가 로컬 컴퓨터에 있는지 어떻게 확인할 수 있습니까?
- 20. 배치 파일에서 프로그램 설치 여부를 어떻게 확인할 수 있습니까?
- 21. 테이블이 SQL Server CE 3.5에 있는지 여부를 확인할 수 있습니다.
- 22. 하나만 존재 여부를 확인할 수 있습니까?
- 23. PHP 사용 GZIP가 켜져 있는지 어떻게 확인할 수 있습니까?
- 24. AppleScript : Finder : 데스크탑에 포커스가 있는지 여부를 어떻게 알 수 있습니까?
- 25. 자식 커밋이 다른 커밋의 부모인지 여부를 어떻게 확인할 수 있습니까?
- 26. 위치 서비스가 활성화되어 있는지 확인할 수 있습니까?
- 27. 모바일 네트워크를 사용할 수 있는지 여부를 어떻게 알 수 있습니까?
- 28. Java System.out이 터미널인지 여부를 어떻게 확인할 수 있습니까?
- 29. 메일 서버가 SMTP 인증을 필요로하는지 여부를 어떻게 확인할 수 있습니까?
- 30. 매개 변수가 Symbol인지 여부를 어떻게 확인할 수 있습니까?
Im은 JSF 1.x에서만 가능합니다. 이런 식으로하고 싶은 이유는 복원보기 단계에서 메서드를 호출해야 할 필요가없는 관리 대상 Bean에서 호출하기 때문에 비용이 많이 들기 때문입니다. 그래서 나는 "복원보기에 있다면 아무 것도하지 말라"는 로직을 넣고 싶습니다. – BestPractices
다른 방법으로 생각 해 봤니? 'RENDER_RESPONSE'에 있는지 확인하고 있습니다. 이 방법으로 JSF 1.0 이후 이미 사용 가능한'if (FacesContext.getCurrentInstance(). getRenderResponse()) {}'를 대신 사용할 수 있습니다. 그러나 bean 자체가 요청 범위가된다면 bean의 생성자에 넣을 것입니다. Bean이 너무 많은 책임을 가지고 있지 않다면, 또 다른 문제가 있습니다.) – BalusC
OK - getRenderResponse를 확인해 보았지만 RestoreView 단계에 있는지 여부를 결정할 수 있는지 여부는 확실하지 않았습니다. 나는 그것을 시도 할 것이다 ... – BestPractices