[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;
	}

}



猜你喜欢

转载自blog.csdn.net/qq_38277033/article/details/80720632