2012-04-04 2 views
2

Primefaces Datatable을 사용하는 페이지가 있습니다. 기본적으로 ManagedBean은 데이터베이스를 쿼리하고 DataTable의 정보를 보고서로 표시하며 filterBy 옵션을 사용하여 필터링합니다.프라임 세션에서 세션 유지 방법 DataTable 필터

정보가 페이지의 새로 고침에 의해 자동으로 업데이트됩니다. 내 문제는 시스템이 페이지를 다시로드하고 시스템에서 필터에 입력 된 정보를 잃어 버렸기 때문에 사용자가 infortions을 다시 필터에 입력해야한다는 것입니다.

사용자가 입력 한 정보를 유지해야하며 내 페이지의 필터 세션을 유지해야한다고 생각합니다. 문제가 해결 될 수 있다고 생각합니다.

+0

@ sapc1313031 빈을 세션 범위로 사용해야합니까? – Kevin

+0

일반적으로 세션 범위는 뒤로 가기 버튼/새 창 안전하지 않으므로 사용하지 않는 것이 가장 좋습니다. JSF 2.0에는 View Scope, Flash Scope 등과 같이 대안을 사용할 수 있습니다. 또는 Tomahawk의 saveState 태그를 사용하여 페이지 요청 사이의 상태를 유지할 수 있습니다 – BestPractices

답변

4

PrimeFaces가 현재 PF 3.2 에서처럼 데이터 테이블의 필터 값 저장을 지원하지 않는 것처럼 보입니다.

대신 열에 대한 헤더 패싯을 구현하고 그 안에 필터를 수행 할 백업 빈의 메서드에 바인딩 된 입력 필드를 추가하는 것이 좋습니다. 그런 다음 뷰 범위 (View Scope 관리 빈 또는 Tomahawk의 saveState 구성 요소 사용)에 필터 필드의 값을 저장할 수 있습니다. 입력 필드는 ap : ajax 구성 요소로 설정할 수 있으며 (아마도 설정해야 함) 사용자가 필드의 값을 변경하면 뒷받침 빈 메서드가 호출되어 필터가 완전히 동일하게 수행 할 수 있습니다 p : column의 filterBy 특성을 사용하여 구현했습니다.

필자는 filterBy에 날짜에 대한 팝업 달력을 사용하고 싶을 때 위와 같은 작업을 수행했으며 매우 잘 작동합니다.