springmvc@ModelAttribute注解

来源:互联网 发布:免费微信一键转发软件 编辑:程序博客网 时间:2024/06/15 06:08

package com.atguigu.springmvc.handlers;

import java.util.Arrays;

import java.util.Date;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.SessionAttributes;

import com.atguigu.springmvc.entities.User;

import com.sun.tracing.dtrace.ModuleAttributes;

@Controller

@SessionAttributes(value={"user"})

public classTe1 {

    @ModelAttribute

    public User getUser(@RequestParam("id") Stringid){

        Useruser= newUser();

        if(id!=null && !"".equals(id)){

            user.setEmail("10291009@qq.com"+id);

        }

        returnuser;

    }

   //测试@SessionAttribute

   @RequestMapping("/updateUser")

   publicString updateUser(@ModelAttribute("user")Useruser){

        return"demo1";

   }

}

@ModelAttribute:在方法上,HandlerAdapter每次执行目标方法(updateUser)

都会执行@ModelAttribute标注的方法即getUser,

在执行完getUser方法后会将 User类首字母小写存入model域中,并存入session域中,但如果此时session域中

已经存在了user,那么此时是先将session域的user取出来,进行非空属性更新(并不会将新建user地址值存给sessionuser)

 

然后执行@ModelAttribute("user")Useruser  session中取出user ,将参数user

session域的user进行非空属性更换,将更新后的user放入 modelsession域中