Panduan untuk ViewResolver di Spring MVC

1. Ikhtisar

Semua kerangka kerja MVC menyediakan cara untuk bekerja dengan tampilan.

Spring melakukannya melalui resolver tampilan, yang memungkinkan Anda merender model di browser tanpa mengikat implementasi ke teknologi tampilan tertentu.

The ViewResolver peta melihat nama pandangan yang sebenarnya.

Dan kerangka kerja Spring hadir dengan beberapa view resolver misalnya InternalResourceViewResolver , XmlViewResolver , ResourceBundleViewResolver dan beberapa lainnya.

Ini adalah tutorial sederhana yang menunjukkan cara mengatur resolver tampilan yang paling umum dan cara menggunakan beberapa ViewResolver dalam konfigurasi yang sama .

2. Konfigurasi Web Musim Semi

Mari kita mulai dengan konfigurasi web; kami akan menganotasinya dengan @EnableWebMvc , @Configuration , dan @ComponentScan :

@EnableWebMvc @Configuration @ComponentScan("com.baeldung.web") public class WebConfig implements WebMvcConfigurer { // All web configuration will go here }

Di sinilah kita akan mengatur resolver tampilan kita dalam konfigurasi.

3. Tambahkan InternalResourceViewResolver

ViewResolver ini memungkinkan kita menyetel properti seperti awalan atau akhiran ke nama tampilan untuk menghasilkan URL halaman tampilan akhir:

@Bean public ViewResolver internalResourceViewResolver() { InternalResourceViewResolver bean = new InternalResourceViewResolver(); bean.setViewClass(JstlView.class); bean.setPrefix("/WEB-INF/view/"); bean.setSuffix(".jsp"); return bean; }

Untuk kesederhanaan contoh, kami tidak memerlukan pengontrol untuk memproses permintaan.

Kami hanya membutuhkan halaman jsp sederhana , ditempatkan di folder / WEB-INF / view seperti yang ditentukan dalam konfigurasi:

4. Tambahkan ResourceBundleViewResolver

Seperti nama resolver ini menyarankan ResourceBundleViewResolver menggunakan definisi kacang dalam ResourceBundle .

Pertama, kami menambahkan ResourceBundleViewResolver ke konfigurasi sebelumnya:

@Bean public ViewResolver resourceBundleViewResolver() { ResourceBundleViewResolver bean = new ResourceBundleViewResolver(); bean.setBasename("views"); return bean; } 

Bundel ini biasanya ditentukan dalam file properti, yang terletak di jalur kelas. Di bawah ini adalah file views.properties :

sample.(class)=org.springframework.web.servlet.view.JstlView sample.url=/WEB-INF/view/sample.jsp

Kita juga dapat menggunakan halaman jsp sederhana yang ditentukan dalam contoh di atas untuk konfigurasi ini.

5. Tambahkan XmlViewResolver

Implementasi ViewResolver ini menerima file konfigurasi yang ditulis dalam XML dengan DTD yang sama dengan pabrik kacang XML Spring :

@Bean public ViewResolver xmlViewResolver() { XmlViewResolver bean = new XmlViewResolver(); bean.setLocation(new ClassPathResource("views.xml")); return bean; }

Di bawah ini adalah file konfigurasi, views.xml :

Adapun contoh sebelumnya kita dapat menggunakan halaman jsp sederhana kita yang didefinisikan sebelumnya.

6. Merangkai ViewResolvers dan Menentukan Prioritas Pesanan

Spring MVC juga mendukung beberapa resolusi tampilan .

Ini memungkinkan Anda untuk mengganti tampilan tertentu dalam beberapa keadaan. Kita cukup merangkai resolver tampilan dengan menambahkan lebih dari satu resolver ke konfigurasi.

Setelah kita selesai melakukannya, kita perlu menentukan urutan resolver ini. The rangka properti digunakan untuk mendefinisikan yang merupakan urutan doa dalam rantai. Semakin tinggi properti order (nomor order terbesar), semakin lama view resolver diposisikan dalam rangkaian.

Untuk menentukan urutan kita dapat menambahkan baris kode berikut ke konfigurasi resolver tampilan kita:

bean.setOrder(0);

Berhati-hatilah pada prioritas urutan karena InternalResourceViewResolver harus memiliki urutan yang lebih tinggi - karena dimaksudkan untuk mewakili pemetaan yang sangat eksplisit. Dan jika resolver lain memiliki urutan yang lebih tinggi, InternalResourceViewResolver mungkin tidak akan pernah dipanggil.

7. Kesimpulan

Dalam tutorial ini kami mengonfigurasi rangkaian resolver tampilan menggunakan konfigurasi Java. Dengan bermain dengan urutan prioritas kita dapat mengatur urutan pemanggilan mereka.

Penerapan tutorial sederhana ini dapat ditemukan di proyek github.