本人用的是ssm框架,所以查了一下资料,了解到了关于Spring MVC 的@SessionAttributes
首先说一下@SessionAttributes的用法
@SessionAttributes 只能作用在类上,作用是将指定的Model中的键值对添加至session中,方便在下一次请求中使用。
具体格式就是在类上加以下代码
@SessionAttributes(value = {"apply"})
当然,大多数文章都是写关于值的问题,很少有关于List,其实list跟值放进session也是一样的道理
@Controller
@RequestMapping("apply")
@SessionAttributes(value = {"applyList","collegeList","teacherList","userList"})
public class ApplyController {
@Autowired
private ApplyService applyService;
@Autowired
private CollegeService collegeService;
@Autowired
private TeacherService teacherService;
@Autowired
private UserService userService;
/**
*
* @author 天线宝宝
*/
@RequestMapping("noPass")
public String noPass(Model model, HttpServletRequest request, HttpServletResponse response) {
//这四个List都是从数据库中得到数据
List<ApplyBednum> applyList = applyService.selectAll();
List<College> collegeList = collegeService.selectAll();
List<Teacher> teacherList = teacherService.selectAll();
List<Uuser> userList = userService.selectAll();
model.addAttribute("applyList", applyList);
model.addAttribute("collegeList", collegeList);
model.addAttribute("teacherList", teacherList);
model.addAttribute("userList", userList);
//将数据返回到noPass页面
return "manager/noPass";
}
注意我类名称上面写得是什么!!!!!! 此时此刻已经将这四个list放入了session了!
你可能以为我会在noPass页面得到数据,肯定不是!noPass页面肯定能得到数据,我想要的是在另一些页面得到这些List,这才是我要将list放入session的目的。
我在这里面没有从数据库中获取任何数据,我目的就是要在Pass访问这些list
/**
* @author 天线宝宝
*/
@RequestMapping("Pass")
public String Pass(Model model, HttpServletRequest request){
return "manager/Pass";
}
在noPass页面写freemark语句时,idea会提示list语句出来,但是当时我在pass页面写freeMark语句的时候,idea没有任何提示,但是我尝试了一下,就算没有提示也写进去,最后成功了!
这都会报各种找不到list的提示,不理会,写下去就是了!
结果会成功的