SpringMVC的@SessionAttributes和@ModelAttribute用法

来源:互联网 发布:java程序员累吗 编辑:程序博客网 时间:2024/06/17 20:59

test.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><form action="/save" method="post" enctype="multipart/form-data">    <div class="form-group">        <label class="sr-only" for="name">Name</label>        <input type="text" class="form-control" id="name" placeholder="Name" name="name" value="${user.name }" required>    </div>    <button type="submit" class="btn btn-primary">确认</button></form>

TestController .java

import com.example.model.User;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.*;/** * @author Administrator * */@Controller@RequestMapping(value = "/")@SessionAttributes(value = {"user"})public class TestController {    @RequestMapping(value = "/create", method=RequestMethod.GET)    public String create(final Model model) {        User user = new User();        model.addAttribute("user", user);        /**         * 因为编辑时我们把数据存放在 @SessionAttribute, 如果这里不new一个User, 那么当点击了编辑之后(无论是否保存),再回到创建页面,会发现自动带出了编辑的那条数据         *         * 有另一种做法,这里不new User(), 但是要传入一个SessionStatus sessionStatus作为参数,方法中加入         * sessionStatus.setComplete();         * 这行代码,但这种做法有个问题,就是必须调用两次/create, 才可以清空表单数据         * 另外,就是如果取掉下面两行代码,则/save时必须判断user是否为null,否则会报空指针异常(注意:即使这里没有new User,页面上使用了${user.id}也不会出现空指针异常)         */        return "test";    }    @RequestMapping(value = "/update/{id}", method=RequestMethod.GET)    public String update(final Model model, @PathVariable(value = "id") final Integer id) {        User user = new User();        user.setId(id);        user.setName("模拟数据,实际应根据id从数据库查询");        model.addAttribute("user", user);        return "test";    }    @RequestMapping(value = "/save", method=RequestMethod.POST)    public String save(@ModelAttribute(value = "user") final User user) {        System.out.println(user.getId() + " " + user.getName());        return "redirect:/";    }}

User.java

public class User {    private Integer id;    private String name;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name == null ? null : name.trim();    }}

测试

创建
访问:/create
这里写图片描述
输入:张
这里写图片描述
点击确认,输出:null 张

编辑
访问:/update/1
这里写图片描述
点击确认,输出:1 模拟数据,实际应根据id从数据库查询
注意:在点击确认,后台调用/save时,页面并没有id参数,那么输出的id值从何而来,所以只能是从@SessionAttributes(value = {“user”})中取

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机开不开机了怎么办 苹果6基带坏了怎么办 苹果7基带坏了怎么办 苹果刷机1错误怎么办 4s解锁密码忘了怎么办 4sid密码忘记了怎么办 苹果4忘记id密码怎么办 枣核吃到肚子里怎么办 芝麻分贷款不还怎么办 德国bm家不发货怎么办 金士顿u盘坏了怎么办 箱子的密码忘了怎么办 拉杆箱密码忘了怎么办? 拉杆箱忘了密码怎么办 拉箱密码忘了怎么办 飞行箱密码忘了怎么办 旅行箱密码乱了怎么办 手机sdk版本过低怎么办 cad标注数字太小怎么办 绿萝花肥施多了怎么办 大疆4云台抖动怎么办 三证合一后社保怎么办 三证合一后税务怎么办 身份证在深圳丢了怎么办 吃虾过敏皮肤痒怎么办 吃大头虾手掌痒怎么办 孩子支气管炎咳嗽老不好怎么办 抻筋了 很疼怎么办 短信验证码删了怎么办 对减肥药产生抗体了怎么办 被担保公司骗了怎么办 大学考查课挂了怎么办 大订书机卡针了怎么办 做原创的衣服该怎么办 4s店强制上牌怎么办 小孩一读书就哭怎么办 小孩上中班还哭怎么办 14岁初中生厌学怎么办 加拿大签证拒签了怎么办 离婚后不给孩子抚养费怎么办 格力空调出现e1怎么办