2011-01-09 6 views
1

Facelet에서 서버의 진행 상태를 어떻게 표시합니까? 서블릿을 작성해야합니까? 또는 ApplicationScoped 콩을 통해 가능합니까?JSF 진행 표시 줄 - 서버 측 프로세스

Ajax 방식으로 표시기 (진행률 표시 줄)를 업데이트하고 싶습니다.

답변

2

진행 상황을 표시하고 싶은 항목에 따라 다릅니다. 기본적으로 진행률 표시 줄 구성 요소를 Facelet에 넣고 (예 : http://www.primefaces.org/showcase/ui/progressBar.jsf) 진행률 정보를 제공 할 수있는 빈에 값을 바인딩합니다.

진도를 얻는 방법은 완전히 다른 문제이며 JSF의 직접적인 영역 밖에 있습니다. 예를 들어, 백 그라운드 진행이 Quartz 작업 인 경우, 진행 표시 줄이 폴링 요청을 보낼 때마다 Bean은 작업 ID를 기억하고 Quartz 스케줄러를 사용하여이를 검색 할 수있다. Quartz 작업 내에서 실행되는 코드는 전체 프로세스에서 얼마나 멀리 있는지 계산해야한다.

Servlet 3.0 및 CDI의 이벤트 버스를 사용하면 역 AJAX/혜성을 활용하고 진행률 표시 줄에 폴링을 수행하는 대신 진행률 표시 줄이 업데이트 이벤트를 기다릴 수 있습니다. 이 경우 배경 작업은 주기적으로 업데이트 이벤트를 게시해야합니다. 이것은 더 효율적이지만 여전히 상대적으로 새롭고 언제나 즉시 지원되는 것은 아닙니다.

+0

나는 그 과정을 끝냈다. 나는 진보의 가치를 얻을 수있다. 그래서 나는 첫 번째 해결책이 충분하다고 생각한다. 그러나 두 번째 해결책은 너무 좋고 언젠가 그것을 시도 할 수도있다. – ehsun7b