在学习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注解,
但是在这个例子里面产生的效果和不加似乎是一样的,都能够绑定表单信息到对象中,
所以想问下这个注解的功能?在这个例子中是不是即使不显示写也能有一样的功能?
Tidak, @ModelAttribute mempunyai dua fungsi
Salah satunya adalah untuk mengeluarkan data, iaitu, mengeluarkan data daripada permintaan dan merangkumkannya ke dalam parameter kaedah pengawal letakkan data ini ke dalam Model Dengan cara ini, anda boleh menggunakan ungkapan EL dalam halaman jsp untuk mendapatkan data dan memaparkannya
Jika anotasi @ModelAttribute ditambahkan pada parameter, kunci dalam @ModelAttribute akan ditemui terlebih dahulu sebelum melaksanakan @RequestMapping Jika tiada @ModelAttribute dan ia tidak tersedia atau tidak diperolehi, objek spitter akan dijadikan instantiated melalui. refleksi, dan kemudian permintaan yang diluluskan mendapat nilai yang anda tetapkan ke dalam objek. Walaupun hasilnya sama, prosesnya berbeza.
Walaupun ia mempunyai ciri tersendiri, saya tidak pernah menggunakannya setelah sekian lama menggunakannya, saya rasa ia boleh diabaikan @ModelAttribute