2011-03-05 2 views
0

사용자가 로그인 할 때 만든 15 개의 최근 레코드 목록을 표시하는 페이지가 있습니다. jsf 페이지에는 검색 기준과 명령 버튼에 대한 필드가 거의없는 두 개의 폼이 있습니다. 다른 양식은 레코드를 가져 와서 그것을 표시 할 datatable을 가지고 있습니다. 데이터 테이블 마지막 열에는 상태에 따라 표시되는 링크가 있습니다.JSF 명령 버튼

h : datatable 태그에 레코드를 표시하려면 해당 빈의 검색 속성이 null 인 경우 레코드를 반입하는 Backing Bean RecordSearchBean 등록 정보 레코드를 사용하고 있습니다. RecordSearchBean 갖는된다 proerties :

FROMDATE는 TODATE (기록을 표시하는 데 사용) 기록 fetchRecords() (사용자의 최근 15 개 레코드를 얻는 방법) 를 (검색 criertia 사용) (검색 criertia 사용) searchRecords는 (의 ActionEvent E)

공개 목록 getRecentRecord() {

경우 (FROMDATE == 널 & & TODATE == NULL) (JSF 페이지에서 검색 버튼 호출) { this.records의 =의 fetchRecords() ; } this.records를 반환합니다. }

공개 목록 fetchRecords() { // 코드 기록 }

공공 무효 searchRecords (의 ActionEvent 전자) { 의 목록을 얻을 // 코드 검색 기준에 따라 레코드를 얻을 수 목록 searchedRecords = getREcords (this); this.records = searchedRecords; }

이 RecordSearchBean은 요청 범위에 있습니다.

jsf에서 무엇을하는지는 사용자가 로그인 한 다음 레코드 속성으로 채워진 레코드를 가져 와서 데이터 테이블에 표시하는 것입니다.

사용자가 jsf 페이지에서 검색 버튼을 클릭하면 recordsRecords actionlistener에 의해 records 속성이 채워집니다. 그 때까지는 모든 일이 순조롭게 진행되고 있지만 마지막 열의 데이터 테이블에 제공된 링크를 클릭하면 다시 로그인하게됩니다. 사용자가 로그인하면 표시되는 레코드 목록을 다시 얻게됩니다.

홈 페이지가 하나 있습니다 탭에서 사용자가이 탭을 클릭 할 때 그는 로그인 할 때 사용자에게 표시되는 15 개의 레코드 목록을 가져옵니다.

이 문제는 jsf 관리 bean 범위와 관련이 있다고 생각합니다. Bean의 범위를 지정하면 databale의 마지막 열에있는 모든 링크가 올바르게 작동합니다. 사용자가 다음 그는 저를 도와주세요.

에 로그인 할 때 그가 가지고 있었다 레코드 목록을받지 않습니다 홈 페이지를 클릭 할 경우이 경우

.

답변

0

나는 문제가 (이미 언급했듯이) RequestScoped과 관련 될 수 있다고 생각합니다. 링크를 클릭하면 Bean이 새로 인스턴스화되고 모든 특성이 재설정됩니다.

대신 ViewScoped을 사용하고 홈페이지 탭을 클릭하면 fromDatetoDate을 null로 재설정하십시오. ViewScope에서 메서드에서 null을 반환하여 동일한 페이지를 다시로드하면 Bean이 다시 인스턴스화되지 않습니다.