`@SessionAttributes` 註解只用作用在 類 上,作用是將指定的 Model 的鍵值對保存在 session 中。可以讓其他請求共用 session 中的鍵值對。 指定保存的屬性名 作用是將 Model 中指定 屬性名 的鍵值對保存在 session 中。 下麵的代碼中, 請求將 M ...
@SessionAttributes
註解只用作用在 類 上,作用是將指定的 Model 的鍵值對保存在 session 中。可以讓其他請求共用 session 中的鍵值對。
指定保存的屬性名
作用是將 Model 中指定 屬性名 的鍵值對保存在 session 中。
下麵的代碼中,/user-information
請求將 Model 中的 user 對象添加到了 session 中。所以在 /testSession
請求中,雖然沒有在 Model 中設置鍵值對,但是在頁面中仍然可以取得 user 對象。因為 user 對象被添加到了 session 中,其他請求仍然可以取得。
使用 @SessionAttributes(value = {"user1", "user2", "user3"})
可以指定多個添加到 session 中的 Model 屬性名。
package com.pudding.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.pudding.bean.User;
@Controller
@SessionAttributes("user")
public class SessionAttributesController {
@RequestMapping("/user-information")
public void setSessionModel(Model model) {
User user = new User("小明", 18);
model.addAttribute("user", user);
}
@RequestMapping("/testSession")
public String get() {
return "test";
}
}
指定保存的屬性類型
作用是將 Model 中指定 類型 的鍵值對保存在 session 中。
同樣的,可以使用 @SessionAttributes(types = {User.class, Person.class})
來指定多個類型。
package com.pudding.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.pudding.bean.User;
@Controller
@SessionAttributes("user")
public class SessionAttributesController {
@RequestMapping("/user-information")
public void setSessionModel(Model model) {
User user = new User("小明", 18);
model.addAttribute("user", user);
}
@RequestMapping("/testSession")
public String get() {
return "test";
}
}
混合使用
當然,你也可以混合使用上面的兩種方式:@SessionAttributes(value = {"user1", "user2"}, types={Persion.class})
會將 model 中屬性名為 user1 和 user2 以及類型為 Person 的屬性添加到 session 中。