zoukankan      html  css  js  c++  java
  • springmvc之SessionAttributes注解所引发的异常

    现有如下代码:

    SpringmvcTest.java

    @SessionAttributes(value={"person"},types= {String.class})
    @RequestMapping("/springmvc")
    @Controller
    public class SpringmvcTest {
        private static final String SUCCESS = "success";
        
    //    @ModelAttribute
    //    public void getPerson(@RequestParam(value="id",required=false) Integer id,
    //            Map<String,Object> map) {
    //        if(id != null) {
    //            Person person = new Person(1,"jack",18,"123456");
    //            System.out.println("模拟的数据库中的数据"+person);
    //            map.put("person", person);
    //        }
    //    }
        
        @RequestMapping(value="/testModelAttribute")
        public String testModelAttribute(@ModelAttribute("person") Person person) {
            System.out.println(person);
            return SUCCESS;
        }

    index.jsp

        <form action="springmvc/testModelAttribute" method="POST"><br>
            <input type="hidden" name="id" value="1"><br>
            <span>username:</span><input type="text" name="username" value="tom"><br>
            <span>age:</span><input type="text" name="age" value="20"><br>
            <input type="submit" value="submit"><br>
        </form>

    在testModelAttribute中使用@ModelAttribute("person")标识person,首先会在用ModelAttribute注解标识的方法中的map找到person,如果没有就回去SessionAttributes中的value属性中进行查找。value中有person,但是在session中并没有,于是会抛出异常:

     解决方法一:

    将@ModelAttribute("person")中的值改为与SessionAttributes中的不一致。即可以改为@ModelAttribute("myperson")

    此时在success.jsp:可以通过myperson名取得值

        <p>Success</p>
        <p>myperson person:${requestScope.myperson}</p>

    解决方法二:

    去掉@ModelAttribute("person"),同时要有@ModelAtrribute标识的方法。即将SpringmvcTest.java中的注释打开。

    此时在success.jsp:就可以通过person名来取得值

        <p>Success</p>
        <p>person person:${requestScope.person}</p>

     关于ModelAttribute和SessionAttributes的具体用法可以参考之前的博客。

  • 相关阅读:
    企业IT管理员IE11升级指南【1】—— Internet Explorer 11增强保护模式 (EPM) 介绍
    探讨 : Host在IIS上的WCF Service的执行方式
    JavaScript性能优化
    canvas圆形进度条(逆时针)
    微信二次分享无标题无图片问题参考
    Promise学习
    好用的jq复制插件clipboard.js
    掘金好文链接
    js冒泡排序
    基于JQ的记忆翻牌游戏
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12179670.html
Copyright © 2011-2022 走看看