웹 페이지에 2 개의 링크가 있고 appserver /? dept = 1에 1 개의 링크를 연결하고, 링크 2는 appserver /? dept = 2입니다. 그런 다음 JSF 위상 리스너를 가지고 거기에 백엔드 bean을 가져다가 dept1 또는 dept2를 bean 매개 변수로 설정하여 다른 부서 내용을 렌더링 할 수 있습니다. 사용자가 위 웹 페이지에서 2 개의 창을 시작하면 dept1 창의 내용은 dept2 창으로 갈 수 있습니다. 모두 망 쳤어. (브라우저에서 바탕 화면 바로 가기를 시작하면 위의 링크를 입력해도 아무런 문제가 없습니다. 2 세션이 만들어지기 때문에 두 가지 백엔드 빈 인스턴스가 생성됩니다.)JSF 1.x에서 뷰 범위 Bean을 작성하는 방법은 무엇입니까?
핵심 이유는 JSF store back 빈이 세션에 있으므로 동일한 부모 창에서 동일한 세션 ID (쿠키)를 공유하는 두 개의 창은 동일한 백엔드 빈 클래스 인스턴스를 사용했습니다. 렌더링 결과 시간에 결과는 어느 창 으로든 갈 수 있습니다.
이 창 교차 콘텐츠 상황을 어떻게 피할 수 있습니까? 이것은 오래 전에 해결되어야하는 근본적인 웹 앱 문제로 보인다. 아니면 내가 일을 정말로 잘못했을 수도 있습니다.
나는 이음선 변환을 시도하지 않았다. JSF2.0에는 뷰 범위, CDO가있다. 복용량 도움이 될까요? 아직 여러 가지 이유로 JSF2.0으로 이동할 수 없습니다. JAVA6, Tomcat6.20, Icefaces를 사용하고 있습니다. 어떤 도움도 충당됩니다.
감사합니다. 나는 한 번 시험해 볼 것이다. 또한 나는 다른 URL을 사용하도록 링크 페이지를 변경할 수 있다고 생각했는데 (각 앱 서버마다 각 부서마다 다른 서블릿이 있음), 각 창마다 서로 다른 URL을 치기 때문에 다른 세션을 만들 수 있습니다. 그러나 사용자가 동일한 부서에서 여러 창을 열면 문제가 계속 발생할 수 있습니다. – Charles
BalusC, 제안 작품. 그리고 이것이 가장 방해가되지 않는 가장 간단한 해결책이라고 생각합니다. 1 시간 안에 작동 해. 다른 사람들을위한 경험을 공유하기 위해서 : 1. 빈 범위를 요청으로 정의해야합니다. 2. 빈 코드를 직렬화 가능으로 만드십시오. 3. common-el-1.0.jar common-fileupload-1.2.1 jar, 다운로드 한 Tomahawk lib의 commons-io-1.3.2.jar tomahawk12-1.1.10.jar를 사용했습니다. – Charles
당신을 진심으로 환영합니다. 가장 도움이되는 답을 표시하는 것을 잊지 마십시오. http://stackoverflow.com/faq를 참조하십시오. – BalusC