java - SpringMVC中的@ModelAttribute注解是可有可无的吗?
天蓬老师
天蓬老师 2017-04-18 10:53:45
0
3
584

在学习SpringMVC中的使用Controller接受表单的值,
按照《Spring实战》中的代码,Controller如下:

    @RequestMapping(value = "/register", method = POST)
    public String processRegistration(Spitter spitter) {
        System.out.println(spitter.getUsername());
        spitterRepository.save(spitter);
        return "redirect:/spitter/" + spitter.getUsername();
    }

打印那行是我自己加的,用来验证表单的值是否绑定到了Spitter对象
而Spring官方的教程中在Spitter前面多了一个@ModelAttribute注解,
但是在这个例子里面产生的效果和不加似乎是一样的,都能够绑定表单信息到对象中,
所以想问下这个注解的功能?在这个例子中是不是即使不显示写也能有一样的功能?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(3)
洪涛

不是的,@ModelAttribute有兩個作用,
一個是取出數據,也就是將數據從請求中取出來封裝到controller方法的參數中
一個是將這個數據放置到Model中,這樣你就可以在jsp頁面中使用EL表達式取出資料並顯示

左手右手慢动作

如果在參數上加了@ModelAttribute 註解,再執行@RequestMapping之前會先找到@ModelAttribute中的key,如果沒有@ModelAttribute ,如何沒有或沒有獲取到則會透過反射實例化一個spitter 物件,再透過request拿物件到你set到物件裡面的值。雖然結果是一樣的,但是走的流程不一樣。

迷茫

雖然有它自己特點,但是用了這麼久,都沒用上過,我覺得可以忽略 @ModelAttribute

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!