어떤 문제가입니다 : 브라우저에서 뒤로 버튼을 클릭하면 어떻게됩니까 -> 그에서있는 명령에서 요청을 제출 ->이 viewscoped-ManagedBean은 이미 파괴 된 페이지를 엽니 다 그리드 레코드 선택 페이지?브라우저 + viewscope 콩
내가 기대 : 연관된 viewscope-managebean 다시 만들어집니다 를, 그리드 기록 선택을 수신하고 다시 브라우저 버튼이 포함되지 않습니다 것처럼 그들과 거래.
내가 경험 한 것 : 연관된 viewscope-managebean은 다시 생성되지 않으며 그리드 레코드 선택을받지 못합니다. URL을 다시 입력하거나 F5 키를 다시 눌러 브라우저가 제대로 작동하게하십시오.
그래서 여기가 성공 시나리오의 모든 콩 viewscoped하는 콩 :
- GET의 page1.xhtml -> page1Bean 생성, 쿼리 데이터는 @PostConstruct에
- 체크 /에서 여러 레코드를 선택 등 데이터 테이블, 처리 버튼 클릭
- page1Bean의 프로세스 메소드는 선택한 레코드를 플래시 객체에 저장하고 page2.xhtml
- 페이지 1로 리디렉션하고 page2Bean을 삭제하고 preRenderView로 리디렉션합니다. 리스너 방법은 플래시 객체에서 선택한 레코드를 가져, 그리고 그들과 거래를
- 클릭 "메인 페이지로 이동"명령 단추가 page1.xhtml로 리디렉션 및 page2Bean이 page1Bean없이 2에서 다시
- 루프 생성, 파괴 - > page1Bean 생성 -
- 이 page1.xhtml GET : 5이가 다시 브라우저 버튼을 (다른 식료품 일어나고 # 6부터 시작) 관련된 errornous 시나리오입니다, 지금은 여전히
행할 dat 질의 A, 등 @PostConstruct에
- 검사/데이터 테이블에서 여러 레코드를 선택
- page1Bean의 처리 방법은 플래시 객체에서 선택한 레코드, 그리고
- page1Bean가 파괴 page2.xhtml로 리디렉션 저장 프로세스 버튼을 클릭, 생성 page2Bean 및 preRenderView 리스너 방법, 플래시 객체에서 선택한 레코드를 가져, 그리고 그들과 거래를하는 것은
- /뒤로 버튼 page2Bean이 page1Bean이
- 수표를 작성되지 파괴되지 않는 브라우저를 클릭에서 여러 레코드를 선택 데이터 테이블, 프로세스 버튼 클릭
- page1Bean 메서드가 실행됩니다 (즉, page1Bean이 파괴 되었기 때문에 이상합니다). 그러나 레코드 선택을 볼 수없고 page2로 리디렉션 할 수 없습니다.XHTML
- page1Bean는 page2Bean이 (가 파괴되지 이후)가 생성되지 않는다 (NO 로깅 출력) 파기 평소대로 preRenderView 리스너를 실행하고, 이번에는 더 플래시 오브젝트의 레코드를 선택하지 않은
브라우저 백 버튼이있는 viewscope-beans에서 정상적인 경험을 할 수 있습니까 (예 : 브라우저 백 버튼이없는 것처럼)?
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.3</version>
<scope>compile</scope>
</dependency>
이 당신의 아이디어를 공유하십시오 :
여기 내 의존성입니다!
예를 들어 주셔서 감사합니다 :) 나는 클라이언트에 상태 저장 방법을 변경하려고했는데, 나는 좀 이상하게 들렸습니다. 나는 많은 빈과 도메인 빈을 직렬화 가능으로 변경해야합니다. 그래서, 필터를 시도하고 위대한 일을! http://turbomanage.wordpress.com/2006/08/08/disable-browser-caching-in-jsf/ 여기에는이 기사의 걱정거리가 있지만 걱정할 필요는 없습니다. 하지만 여기서 제 경험으로는 아주 잘 작동합니다. – bertie
'PhaseListener'에서 이것을하는 것은 어색합니다. 보장에 관해서는, 그는 요점을 가지고 있지만 모든 최신 브라우저 (IE, FF, GC, AS, O 등)는 HTTP 캐싱 규칙을 올바르게 준수합니다. 클라이언트가 모호한 브라우저를 사용할 때만 실패 할 것입니다. – BalusC
하지만 한 가지가 있습니다. 브라우저의 뒤로 버튼을 클릭하면 p : datatable의 체크 박스가 선택되어 있지만 제출되면 실제로 체크되지 않습니다. 이것은 Google 크롬 15에서 발생하지만, Firefox 5.0.1에서는 발생하지 않습니다. 나는 이것과 같은 상황이라고 생각한다 : http://stackoverflow.com/questions/6100741/how-to-prevent-browsers-from-remembering-checkbox-state. 나는 솔루션에 명시된대로 무작위 화 된 폼 이름을 사용하려고한다. ,하지만 모르겠다면 내 양식의 이름을 모르는 경우 여러 양식이있는 페이지에서 다른 양식을 새로 고치는 방법을 모르겠다. – bertie