[SpringMVC]@ModelAttribute

总觉得在表单写 name="id"和name="name"不安全……最好加前缀吧- -

言归正传,@ModelAttribute感觉是一个很神奇的注解,初步了解是用于更新

被更新的数据由于要创建新的对象,如果数据里某条不能被修改,但是submit后不填写该条数据提交后就是null

而这个注解可以很好解决这个问题,要修改的值就修改,不改就用原来的,大概是这个意思。

原理被此注解标记的方法会在目标方法执行前调用

在被修饰的方法中,放入map的的键名需要和目标方法入参类名改为第一个小写字母后一致

<form action="ModelAttr/testModelAttr" method="post">
		<input type="hidden" value="3", name="uid">
		姓名srting:<input type="text" name="username" value="yiki"><br>
		年龄int:<input type="text"name="age" value="299"><br> 
		<br> 
		<input type="submit" value="submit">
	</form>
package com.yiki.Handle;

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.yiki.pojo.User;

@RequestMapping("/ModelAttr")
@Controller
public class ModelAttributeTest {
	private static final String SUCCESS = "success";

	@ModelAttribute
	public void getUser(@RequestParam(value = "uid", required = false) Integer uid, Map<String, Object> map) {
		if (uid != null) {
			User user = new User(1, "yiki", 12345, 9);
			System.out.println("数据库" + user);
			map.put("user", user);

		}
	}

	@RequestMapping("/testModelAttr")
	public String testModelAttribute(//@ModelAttribute=(value="test")也可以使得Spring找到user==》map.put("test",user)
			User user) {
		System.out.println("修改" + user);
		return SUCCESS;
	}

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值