zoukankan      html  css  js  c++  java
  • @ModelAttribute 注解及 POJO入参过程

    一、modelattribute注解

    @ModelAttribute注解的方法有两种,一种无返回值,一种有返回值,方法的可以用@RequestParam注解来获取请求的参数,如果不获取参数,可以不用此注解

    1)无返回值,用Map中的对象放入ImpliciteModel中,key就是map中存储的key.

        @ModelAttribute
        public void setUser(@RequestParam(value="name",required=false) String name, Map<String,Object> map)
        {
            Address ad=new Address();
            ad.setCity("beijing");
            ad.setProvince("china");
            User u=new User();
            u.setAge(15);
            u.setAddress(ad);
            if(name.equals("xp")){
                u.setWork("huajia");
            }
            else {
                u.setWork("gongchengshi");
            }
            map.put("user", u);
            System.out.println(u);
        }

    2)有返回值   把返回值对象放入ImpliciteModel中,key就是ModelAttribute定义的key:"user"

        @ModelAttribute("user")
        public User setUser(@RequestParam(value="name",required=false) String name)
        {
            Address ad=new Address();
            ad.setCity("beijing");
            ad.setProvince("china");
            User u=new User();
            u.setAge(15);
            u.setAddress(ad);
            if(name.equals("xp")){
                u.setWork("huajia");
            }
            else {
                u.setWork("gongchengshi");
            }
            System.out.println("用户"+u);
            return u;
        }

    总结:   @ModelAttribute("user")指定key为"user"时,若方法有返回值,则返回值会以指定的key,放入ImpliciteModel中;若方法没有返回值,但是方法中有相同key的map,则存入ImpliciteModel中key的为map中存的对象,若没有相同key的map,则存入ImpliciteModel中key对应的对象为null.若方法有返回值且方法中也有相同key的map,则以map对象优先。

                 @ModelAttribute没有指定key时,只能用Map将对象存入ImpliciteModel中。

    ImpliciteModel中的对象,可以认同为Request域中对象。

    二、 POJO入参过程

    1,检查implicite中是否存在相同key(默认为pojo类名小写,可以用@modelattribute指定)的值,有则传入,并用请求的参数值替换对应的值。

    2,若implicite中没有,则检查sessionattribute中是否相同key的值,有则同一,没有则抛异常(可以通过配置,避免异常)。

    3,若1、2中都没有,则通过反射创建对象,并用请求的参数值替换对应的值。最后再把对象存入implicite中。

  • 相关阅读:
    Unity3D-实现连续点击两次返回键退出游戏(安卓/IOS)
    Unity3D插件-自制小插件、简化代码便于使用(新手至高手进阶必经之路)
    Unity3D安卓程序中提示窗与常用静态方法封装
    Unity插件-NGUI使用教程
    Unity 3D游戏-塔防类游戏源码:重要方法和功能的实现
    Unity 3D编辑器扩展介绍、教程(二) —— 创建窗口
    Unity 3D编辑器扩展介绍、教程(一) —— 创建菜单项
    Unity 3D换装系统教程/Demo
    Unity3D游戏-愤怒的小鸟游戏源码和教程(二)
    WebApi接口测试
  • 原文地址:https://www.cnblogs.com/tyhj-zxp/p/5578136.html
Copyright © 2011-2022 走看看