2013-10-31 47 views
2

我已經在論壇表單中搜索了我的查詢,但是找不到答案。 我是新的春天mvc所以我有點困惑它會很好,如果有人幫助我,如何維護會話範圍pojo類中的數據spring mvc 3.0.3

我有一個春天mvc應用程序,我從請求參數獲取一些數據,我必須保持該數據通過退出會議。我怎麼能使用Spring 3.0.3來實現這一點。

我有一些想法考慮實施這一

1>創建一個會話範圍 2 POJO>然後在控制器自動裝配的POJO和填充POJO。 3>因爲它在會議範圍內,所以在整個會議期間填充的值應該是可用的

請讓我知道,如果我在正確的軌道上。

謝謝。

回答

2

你說的想法是使用會話範圍的bean的一種方法。您可以定義會話範圍POJO:

@Component 
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) 
public class YourSessionBean{ 
... 
} 

然後你就可以在你的控制器類注入它:

@Controller 
public class YourController { 
    @Autowired 
    private YourSessionBean yourSessionBean; 
    ... 
} 

您還可以使用@SessionAttributes你的POJO存儲到會話:

public class YourObject { 
... 
} 

,您可以在您的控制器中使用@SessionAttributes註釋將YourObject的實例放入會話中:

@Controller 
@SessionAttributes("yourObj") 
public class YourController { 
    ... 
    @RequestMapping(value="/url") 
    public ModelAndView process(...) { 
    ModelAndView modelAndView = new ModelAndView(); 
    modelAndView.addObject("yourObj", new YourObject()); // this will put YourObj into session 

    return modelAndView; 
} 
} 

但是,在使用@SessionAttributes,你應該考慮下面的語句塊(從@SessionAttributes Doc複製):

注意:使用此批註 指示對應於一個特定的處理程序的模型會話屬性的屬性,讓在會話會話中透明地存儲 。一旦 處理程序指示完成其會話會話,那些屬性將被刪除。因此, 使用此功能的這種對話屬性 應該在 特定處理程序的對話過程中臨時存儲在會話中。

對於永久會話屬性,例如,用戶認證對象 改爲使用傳統的session.setAttribute方法。

您還可以使用HttpSession作爲方法的參數爲您@RequestMapping處理方法,然後再加入您的POJO類的會話:

@Controller 
public class YourController { 
    ... 
    @RequestMapping(value="/url") 
    public ModelAndView process(HttpSession session,...) { 
    ModelAndView modelAndView = new ModelAndView(); 
    session.setAttribute("yourObj", yourObj); 
    ... 
    return modelAndView; 
} 
} 
+0

謝謝你的答案。 – user1834664

+0

@ user1834664不客氣。 –