package com.springs.mvc;
import com.spring.entity.User;
import com.sun.org.apache.xpath.internal.operations.Mod;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* ModelAttribute 用法详解
*/
@Controller
@RequestMapping(value = "/cms")
public class CmsController {
/* ModelAttribute 1: 注释返回具体类的方法
@ModelAttribute(value = "loginname") //使用value来指定model属性名称,model值就是方法返回值
public String userModel1(@RequestParam("loginname") String loginname){
return loginname;
}
@RequestMapping(value = "/login1")
public String login1(){
return "result1";
}
//result1.jsp : ${requestScope.loginname}
*/
/* ModelAttribute 2: 注释void返回值方法
@ModelAttribute
public void userModel2(@RequestParam("loginname") String loginname, Model model){
model.addAttribute("loginname",loginname);
}
@RequestMapping(value = "/login2")
public String login2(){
return "result2";
}
//result2.jsp : ${requestScope.loginname}
*/
/* ModelAttribute 3:注释返回具体方法
public User findUser(String loginname){
Map<String ,Object> map = new HashMap<String ,Object>();
for(int i = 1;i<10;i++){
String username = String.valueOf(i);
User user = new User();
user.setUsername(username);
map.put(username,user);
}
if(map.get(loginname) != null){
return (User) map.get(loginname);
}
return null;
}
@ModelAttribute//model属性名没指定,那就是返回值类型的小写也就是user
public User userModel3(@RequestParam("loginname") String loginname){
return this.findUser(loginname);
}
@RequestMapping(value = "/login3")
public String login3(){
return "result3";
}
//result3.jsp : ${requestScope.user.username}
*/
/*ModelAttribute 4: @RequestMapping与 @ModelAttribute同时指定方法,RequestMapping的value就是页面名称,
ModelAttribute的value是model的名称,方法返回值就是Model的value
@RequestMapping(value = "/result1")
@ModelAttribute(value = "username")
public String login4(){
return "value666";
}
// /view/cms/result4.jsp : ${requestScope.username}
*/
/*ModelAttribute 5 : @ModelAttribute 注释一个方法的参数
@ModelAttribute("user") //使用value来指定model属性名称,model值就是方法返回值
public User userModel5(@RequestParam("loginname") String loginname,@RequestParam("password") String password){
User user = new User();
user.setUsername(loginname);
user.setPassword(password);
return user;
}
@RequestMapping(value = "/login5")
public String login5(@ModelAttribute("user") User user){
user.setMobile("13247629622");
return "result5";
}
//result5.jsp : ${requestScope.user.loginname}
*/
}