@SessionAttributes 的使用


@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 中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM