jquery
  • ajax
  • spring
  • model-view-controller
  • session
  • 2012-03-20 66 views 3 likes 
    3

    我是Spring MVC的新手,我試圖找出合適的方法去做一些我認爲非常簡單的事情。如何在使用Spring MVC的會話中保存字符串?

    我有一個簡單的jQuery AJAX調用:

    var dataString = 'existingProject='+ $("#existingProject").val() + '&newProjName=' +  $("#newProjName").val(); 
    
        $.ajax({ 
         type: "POST", 
         url: "manageProjects.html", 
         data: dataString    
        }); 
    

    我要將此用戶設置「項目」爲用戶的會話。這個AJAX調用來自JS文件中的一個javascript,並連接到我的Spring MVC控制器。

    控制器正在獲取這些變量,但我不確定如何處理它以使該數據傳入會話特定。

    我已經使用了這個主題,並且遇到了6個不同的選項(使用自動裝配注入Session scoped bean,使用xml config和cgl-nodep庫的Bean,HttpServlet屬性,@ModelAttribute,@SessionAttribute等等)。我嘗試着使用Session範圍的bean並定義如下:

    @Component 
    @Scope("session") 
    public class UserSettings 
    

    ...但是這個bean沒有被鎖定到會話中。我在我的控制器中使用了@Autowire,發現它在兩次會話之間仍然是相同的實例,所以我明顯地搞砸了它。

    我只想保存一個嚇人的字符串!還有的必須是一個101級簡單的方法來做到這一點...

    回答

    10
    @RequestMapping(value = "/request/mapping") 
    public ModelAndView methodName(HttpSession session,...){ 
    
    session.setAttribute("testVariable", "Test Values!!"); 
    } 
    

    @RequestMapping("/test") 
    @Controller 
    public class TestController { 
        @RequestMapping(method = RequestMethod.GET) 
        public String testMestod(HttpServletRequest request) 
        { 
         request.getSession().setAttribute("testVariable", "Test Values!!"); 
         return "testJsp"; 
        } 
    } 
    
    +0

    好吧,但我怎麼設定值時,我在AJAX調用啓動?對於在會話中設置屬性的AJAX調用有一個「處理程序」方法是適當的,那麼其他人只是將它拉回來?這是標準做法嗎? – Raevik 2012-03-20 16:51:36

    +0

    沒有區別,只需將通過請求或會話放入您的ajax處理方法即可。 – fmucar 2012-03-20 17:07:16

    +0

    我用你的第一個建議去使用HttpSession。我接受了AJAX調用並在會話中設置了屬性。然後,我在需要它的其他控制器操作中查找該值。 看起來這個屬性在會話中持續存在。我打開了一個新標籤並再次點擊該網站,第一個標籤中的設置已經在我的全新標籤中設置。 – Raevik 2012-03-20 17:08:09

    相關問題