Spring更改了会话值

时间:2017-07-31 10:06:05

标签: java spring-mvc session

在Spring应用程序中,我需要保留用户值,直到我不删除或销毁。

根据它,我在Controller中使用了HttpSession,如下所示

@Controller
public class MyController {

@RequestMapping(value = { "/search" }, method = RequestMethod.POST) //this hander called once
public String search(SearchVo aSearchVo, BindingResult result,
        ModelMap model,HttpSession httpsession) {
    if (result.hasErrors()) {
        model.addAttribute("searches", new SearchVo());
        return "home";
    }       
    httpSession.setAttribute("searchstring", aSearchVo.getSearchString());

    return "caseResult";
}



@SuppressWarnings("unchecked")
@RequestMapping(value = { "/filtersearch" }, method = RequestMethod.POST) //This handler call again and again
public String filterSearch(@ModelAttribute("filter") FilterVo fvo,ModelMap model , HttpSession httpSession){

         String searchKeyWorld=httpSession.getAttribute("searchstring");
             System.out.println(searchKeyWorld);

             searchKeyWorld+=fvo.getFilterWorld();

    return "caseResult";
  } 
}

但是在会话变量中,值会像上一个过滤器一样自动更改;因为我没有在filtersearch Handler中设置任何会话变量

1 个答案:

答案 0 :(得分:0)

您需要使用@SessionAttributes将变量放入http会话中。 这是一个班级级别的宣布。

@Controller
@SessionAttributes("searches")
public class MyController{

@RequestMapping(value = { "/search" }, method = RequestMethod.POST) //this hander called once
public String search(SearchVo aSearchVo, BindingResult result,
        ModelMap model,WebRequest webRequest) {
    if (result.hasErrors()) {
        model.addAttribute("searches", new SearchVo());
        return "home";
    }       
    model.addAttribute("searches", new SearchVo());
   //For removing anything from session
   //webRequest.removeAttribute("searches", WebRequest.SCOPE_SESSION);
    return "caseResult";
}

}