2012-12-05 5 views
0

사용자가 페이지를 떠날 때 세션 변수를 지우고 싶습니다. h : selectOneMenu에서 선택한 값을 기반으로 데이터 테이블을 표시하는 양식이 있습니다. 이 폼에는 세션 변수를 지우는 데 사용되는 destroy 메소드를 호출하는 취소 버튼이 있습니다. 모두 정상적으로 작동합니다.사용자가 페이지를 떠날 때 세션 변수 지우기

문제 설명 : onunload 이벤트에서 호출되는 javascript 함수를 호출하고 있습니다. 이 함수는 숨겨진 버튼 'destroyBtn'을 클릭합니다. 버튼은 destroy() 메서드를 호출합니다. destroy 메서드가 호출되고 값이 지워지지만 양식이나 뒤로 단추 외부의 링크를 클릭하면 페이지 탐색이 으로 중지됩니다. @Component와 @Scope ("session")을 사용하고 있습니다.

function destroy(){ 
alert("Inside Destroy"); 
document.getElementById('MainForm:destroyBtn').click(); 
} 


<h:commandButton id="destroyBtn" styleClass="none" value="Destroy" ajax="false" 
actionListener="#{TutorialsBean.destroy}" /> 




public void destroy(){ 
this.searchTxt=""; 
this.accessType.clear(); 
this.roleCart.clear(); 
this.manager = null; 
this.helpList.clear(); 
this.setComment(""); 
} 

어떤 도움을 주시면 감사하겠습니다. JSF와 스프링을 사용하여 세션을 처리 할 수있는 다른 방법이 있습니까?

+0

버튼이'destroy()'메소드를 호출하지 않는 것 같습니다. 'handleDestroy()'메서드는 무엇입니까? 타이핑 실수입니까? – prageeth

+0

그건 입력 실수입니다 ... –

답변

0

왜 범위를보기로 유지하지 않습니까? 사용자가 페이지에있을 때까지만 데이터가 저장되고 사용자가 페이지를 떠날 때 데이터는 지워집니다.

+0

감사합니다 Pavan, 그게 도움이 될 것입니다.하지만 세션으로 범위를 유지함으로써 변수를 지울 수있는 방법이 없습니까? –

+0

View Scope을 사용해 보았습니다. 이를 위해 jsf의 뷰 범위를 사용자 정의 범위 feature.Now를 사용하여 Spring으로 포팅해야했습니다. 이제 페이지를 떠날 때 변수가 지워집니다. 유일한 문제는 사용자가 값을 선택할 수있는 새 대화 상자를 여는 버튼을 사용하고 있다는 것입니다. 목록에 추가됩니다. 이제 대화 상자를 열면 새보기가 만들어지며 상위 페이지에 값을 유지할 수 없습니다. –

관련 문제