springにおけるModel、ModelMap、ModelAndViewの使い方

3233 ワード

1.Model(org.sprigframe eweet.ui.Model)
ページにパラメータを渡すことができますが、urlをジャンプすることはできません。
先端のパラメータ:
${requestScope.user.loginname }
例:(@ModelAttribute修飾の方法は、loginより先に起動し、要求パラメータ値を対応変数に割り当てます。メソッドのModelにオブジェクトを追加することができます。メソッドにModelタイプのパラメータを追加することが前提です。)
@RequestMapping(value="/login1new")
public String login(Model model, @ModelAttribute User2 user){
    user.setUsername("  2");
    System.out.println(user.toString());
    model.addAttribute("user", user);
    return "result1";
}
上のコードは以下の通りです。
@ModelAttribute
public void userModel(String loginname,String password,Model model){
    logger.info("userModel");
    //   User    jsp       
    User2 user = new User2();
    user.setLoginname(loginname);
    user.setPassword(password);
    //  User     Model  
    model.addAttribute("user", user);
}
    
@RequestMapping(value="/login1")
public String login(Model model){
    logger.info("login");
    //  Model           user   
    User2 user = (User2) model.asMap().get("user");
    System.out.println(user);
    //   user   username  
    user.setUsername("  ");
    return "result1";
}
2.ModelMap(org.springframe eweet.ui.ModelMap)
modelとあまり違いません。
@ModelAttribute
public void userMode2(String loginname,String password,ModelMap modelMap){
    logger.info("userMode2");
    //   User    jsp       
    User2 user = new User2();
    user.setLoginname(loginname);
    user.setPassword(password);
    //  User     ModelMap  
    modelMap.addAttribute("user", user);
}
    
@RequestMapping(value="/login2")
public String login2(ModelMap modelMap){
    logger.info("login2");
    //  ModelMap           user   
    User2 user = (User2) modelMap.get("user");
    System.out.println(user);
    //   user   username  
    user.setUsername("  ");
    return "result2";
}
先端取込み:
${requestScope.user.loginname }
3.ModelAndView(org.springframe ewk.web.servlet.ModelAndView)ModelAndViewオブジェクトには2つの役割があります。(1)urlアドレスを設定する(これもModelAndViewとModelMapの主な違いです。(2)ページにパラメータを転送します。
例:
@Controller
public class User3Controller{
    private static final Log logger = LogFactory.getLog(User3Controller.class);
    
    @ModelAttribute
    public void userMode3(String loginname,String password,
             ModelAndView mv){
        logger.info("userMode3");
        User2 user = new User2();
        user.setLoginname(loginname);
        user.setPassword(password);
        //  User     ModelAndView Model  
        mv.addObject("user", user);
    }
    
    @RequestMapping(value="/login3")
     public ModelAndView login3(ModelAndView mv){
        logger.info("login3");
        //  ModelAndView Model           user   
        User2 user = (User2) mv.getModel().get("user");
        System.out.println(user);
        //   user   username  
        user.setUsername("  ");
        //     ,         
        mv.setViewName("result3");
        return mv;
    }
}
先端取込み:
${user.loginname}