如何在我的弹簧控制器中保持页面范围?

时间:2014-07-21 16:19:35

标签: java spring-mvc session-variables

我在同一页面上同时拥有表单和结果表。该页面由单个@Controller支持。

当用户访问页面(GET)时,我将属性存储在会话范围中,以便在表单提交后可用(我在POST上重新加载页面)。

当用户离开此页面时,我需要以某种方式删除会话范围的属性。

春天3 mvc有办法处理离开我页面的请求吗?

2 个答案:

答案 0 :(得分:1)

您可以使用@Scope注释将范围提供给控制器。

@Controller(value="mycontroller")
@Scope("session")
@RequestMapping("/hello")
public class HelloController
{
    int count = 0;
    public ModelAndView  printHello(HttpServletRequest request) {
        count++;
        ModelAndView mymodelview = new ModelAndView("success");
        mymodelview.addObject(`enter code here`"count", count);
   }
}

如果范围是请求(@Scope("request")),则每次count的值为1时,就好像范围是session,然后对于特定会话,计数值将增加1。

答案 1 :(得分:0)

如果它只是POST,那么您不需要将它们存储在会话中。 您可以在get方法model.addAttribute("bean", BeanClass);中设置模型 然后当你发布页面时,你将拥有那个bean类:

> public String postMethod(@ModelAttribute("bean") BeanClass 
>           bean, BindingResult result, Model model, HttpServletRequest request) 
>           throws Exception { 
>     //... 
> }