Memiliki fungsi dasar ini
protected ModelAndView handleRequestInternal(...) {
...
return new ModelAndView("welcomePage", "WelcomeMessage", message);
}
Saya tahu bahwa ini akan mengembalikan modelandView. Saya tahu itu welcomePage
adalah nama tampilan saya sehingga itu berarti sesuatu seperti welcomepage.jsp
akan dipanggil.
Tapi saya bingung dengan apa itu Model part. Apa WelcomeMessage
dan message
dan bagaimana Model bekerja dalam skenario itu?
spring
spring-mvc
Premraj
sumber
sumber
WelcomeMessage
, pada contoh kedua, saya menyebutnyamodel
. Gunakan nama yang masuk akal bagi Anda. Argumen ketiga berisi informasi ... bisa berupa string sederhana, atau POJO atau peta ... pada dasarnya informasi berguna apa pun yang ingin Anda tampilkan dalam tampilan.new ModelAndView("welcomePage", "WelcomeMessage", message);
adalah singkatan dari
ModelAndView mav = new ModelAndView(); mav.setViewName("welcomePage"); mav.addObject("WelcomeMessage", message);
Melihat kode di atas, Anda dapat melihat nama tampilan adalah "welcomePage". Anda
ViewResolver
(biasanya diatur dalam.../WEB-INF/spring-servlet.xml
) akan menerjemahkan ini menjadi Tampilan. Baris terakhir kode menetapkan atribut dalam model Anda (addObject("WelcomeMessage", message)
). Di situlah model berperan.sumber
Semuanya dijelaskan oleh javadoc untuk konstruktor . Ini adalah konstruktor praktis yang mengisi model dengan satu pasangan atribut / nilai.
Jadi ...
new ModelAndView(view, name, value);
setara dengan:
Map model = ... model.put(name, value); new ModelAndView(view, model);
sumber
Di sini, dalam kasus ini, kami memiliki 3 parameter dalam Metode yaitu ModelandView .
Menurut pertanyaan ini, parameter pertama mudah dipahami. Ini mewakili View yang akan ditampilkan ke klien.
Dua parameter lainnya sama seperti The Pointer dan The Holder.
Oleh karena itu, Anda dapat menyimpulkannya seperti ini
ModelAndView ( View, Pointer, Holder );
Pointer hanya menunjukkan informasi di Pemegang
Ketika Pengendali mengikat Tampilan dengan informasi ini, maka dalam proses tersebut, Anda dapat menggunakan Penunjuk di halaman JSP untuk mengakses informasi yang disimpan di Pemegang untuk menampilkan informasi yang dihormati itu kepada klien.
Berikut adalah gambaran visual dari proses yang dihormati.
return new ModelAndView("welcomePage", "WelcomeMessage", message);
sumber
Nah, WelcomeMessage hanyalah nama variabel untuk pesan (model aktual dengan data). Pada dasarnya, Anda mengikat model dengan welcomePage di sini. Model (pesan) akan tersedia di welcomePage.jsp sebagai WelcomeMessage. Berikut adalah contoh yang lebih sederhana:
ModelAndView("hello","myVar", "Hello World!");
Dalam kasus ini, model saya adalah string sederhana (Dalam aplikasi ini akan menjadi POJO dengan data diambil untuk DB atau sumber lain.). Saya menugaskannya ke myVar dan pandangan saya adalah hello.jsp. Sekarang, myVar tersedia untuk saya di hello.jsp dan saya dapat menggunakannya untuk tampilan.
Dalam tampilan, Anda dapat mengakses data:
${myVar}
Demikian pula, Anda akan dapat mengakses model melalui variabel WelcomeMessage.
sumber
ModelAndView: Nama itu sendiri menjelaskan bahwa itu adalah struktur data yang berisi data Model dan Tampilan.
Map() model=new HashMap(); model.put("key.name", "key.value"); new ModelAndView("view.name", model); // or as follows ModelAndView mav = new ModelAndView(); mav.setViewName("view.name"); mav.addObject("key.name", "key.value");
jika model hanya berisi satu nilai, kita dapat menulis sebagai berikut:
ModelAndView("view.name","key.name", "key.value");
sumber
@RequestMapping(value="/register",method=RequestMethod.POST) public ModelAndView postRegisterPage(HttpServletRequest request,HttpServletResponse response, @ModelAttribute("bean")RegisterModel bean) { RegisterService service = new RegisterService(); boolean b = service.saveUser(bean); if(b) { return new ModelAndView("registerPage","errorMessage","Registered Successfully!"); } else { return new ModelAndView("registerPage","errorMessage","ERROR!!"); } } /* "registerPage" is the .jsp page -> which will viewed. /* "errorMessage" is the variable that could be displayed in page using -> **${errorMessage}** /* "Registered Successfully!" or "ERROR!!" is the message will be printed based on **if-else condition**
sumber