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

在学习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注解,
但是在这个例子里面产生的效果和不加似乎是一样的,都能够绑定表单信息到对象中,
所以想问下这个注解的功能?在这个例子中是不是即使不显示写也能有一样的功能?

天蓬老师
天蓬老师

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

répondre à tous(3)
洪涛

Non, @ModelAttribute a deux fonctions
L'une consiste à extraire les données, c'est-à-dire à retirer les données de la requête et à les encapsuler dans les paramètres de la méthode du contrôleur. placez ces données dans le modèle de cette façon, vous pouvez utiliser des expressions EL dans les pages jsp pour récupérer les données et les afficher
.

左手右手慢动作

Si l'annotation @ModelAttribute est ajoutée au paramètre, la clé dans @ModelAttribute sera trouvée en premier avant d'exécuter @RequestMapping. S'il n'y a pas de @ModelAttribute et qu'elle n'est pas disponible ou n'est pas obtenue, un objet spitter sera instancié via. réflexion, puis la demande transmise obtient la valeur que vous avez définie dans l'objet. Même si le résultat est le même, le processus est différent.

迷茫

Bien qu'il ait ses propres caractéristiques, je ne l'ai jamais utilisé après l'avoir utilisé pendant si longtemps, je pense qu'il peut être ignoré @ModelAttribute

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal