2013-03-31 4 views
-1

현재 검색 조건 속성을 검색 페이지와 편집 페이지의 두 페이지 사이의 세션에 저장하려고합니다. 목표는 세 변수를 저장하는 것입니다. sYear, submission, collectionPeriod. 내가 검색 스크린 컨트롤러 여기에 아래의 세션에 다음을 추가 해요 : 편집 화면 컨트롤러에서 request.getSession().setAttribute("sYearSave", sYear); request.getSession().setAttribute("submissionSave", submission); request.getSession().setAttribute("collectionPeriodSave", collectionPeriod);보기에서 돌아올 때 세션 속성이 null을 반환합니다.

, 나는 true.에 부울 isFromEditScreen 설정이 그렇다 나는 내가로부터오고 있음을 알고 화면 편집. 변수를 출력하고 컨트롤러 화면 편집에서 올바르게 값을 얻습니다.

request.getSession().setAttribute("isFromEditScreen", new Boolean(true)); 
    sYearSave = (String)request.getSession().getAttribute("sYearSave"); 
    collectionPeriodSave = (String)request.getSession().getAttribute("collectionPeriodSave"); 
    submissionSave = (String)request.getSession().getAttribute("submissionSave"); 

하지만 검색 화면으로 돌아 가기 위해 뒤로 버튼을 사용할 때 문제가, 검색 기준이 sYearSave, collectionPeriodSave, and submissionSave 값은 어떤 이유로 NULL.을 돌아가 isFromEditScreen 부울이 잘 작동하고 true.를 반환 실제로 문장을 입력 그러나 검색 기준은 검색 컨트롤러 코드는 다음과 같습니다 null.를 반환 :

if (isFromEditScreen != null && isFromEditScreen == true) { 
     System.out.println("Inside isFromEditScreen ==== true"); 
     sYear = (String)request.getSession().getAttribute("sYearSave"); 
     collectionPeriod = (String)request.getSession().getAttribute("collectionPeriodSave"); 
     submission = (String)request.getSession().getAttribute("submissionSave"); 


     sYearSave = (String)request.getSession().getAttribute("sYearSave"); 
     collectionPeriodSave = (String)request.getSession().getAttribute("collectionPeriodSave"); 
     submissionSave = (String)request.getSession().getAttribute("submissionSave"); 

     System.out.println("sYearSave ==== " + sYearSave); 
     System.out.println("submissionSave ==== " + submissionSave); 
     System.out.println("collectionPeriodSave ==== " + collectionPeriodSave); 
     System.out.println("isFromEditScreen set in else ==== " + isFromEditScreen); 
     } 

이 어떤 도움을 크게 감상 할 수있다!

+0

브라우저의 뒤로 단추를 사용하면 서버에 대한 요청이 생성되지 않습니다. 브라우저는 일반적으로 캐시에서 페이지를로드합니다. LinkButton이나 이와 비슷한 것을 시도 했습니까? – rusty

+1

그리고 세션에 입력 한 값이 'null'이 아닌지 확실합니까? 검색 화면으로 돌아가 "공백"URL로 페이지를 다시로드하면 (즉, 매개 변수가 제공되지 않은 경우) 검색 컨트롤러 구현에 따라 세션 값을 무시할 수 있습니다. 그 외에 - 탭 브라우징에 대해 생각 했습니까? 하나의 세션, 두 개의 탭, 많은 문제 ... – skirsch

+0

'session'에서 검색 매개 변수를 전달하지 않아야합니다. 검색 매개 변수는 [query strings] (http://stackoverflow.com/questions/4128436/query-string-manipulation-in-java)를 사용해야합니다. – Apurv

답변

1

Spring MVC를 사용하는 경우 (질문 태그에서 제안하는 것처럼) SessionAttributes annotaion을 사용하고 Spring의 ModelAndView API를 사용해 보시기 바랍니다. 또한 속성 이름이 응용 프로그램에서 고유해야합니다.

@RequestMapping("view-name") 
@SessionAttributes({ "isFromEditScreen" }) 
public class YourController { 

... 

    @RequestMapping 
    public ModelAndView display() { 

     ModelAndView modelAndView = new ModelAndView("view-name"); 
     modelAndView.addObject("isFromEditScreen", new Boolean(true)); 
     return modelAndView; 
    } 

... 
} 
+0

우리는이 컨트롤러를 만드는 방법을 사용하지 않습니다. 훨씬 더 체계적이고 다목적으로 보이기 때문에이 방법을 사용하여 프로젝트를 시작했으면 좋겠습니다. – Richard

0

내 세션 속성을 덮어 썼습니다. 간과 된 실수.

관련 문제