Spring MVC ViewResolver va View interfeyslarini belgilaydi, ular modelarni brauzerda ko'rishga yordam beradi, sizni ma'lum bir ko'rinish texnologiyasiga bog'lamaydi. ViewResolver ko'rinish nomlari va haqiqiy ko'rinishlar orasidagi moslikni ta'minlaydi. View ma'lumotlarni ma'lum bir ko'rinish texnologiyasiga uzatishdan oldin tayyorlash bilan shug'ullanadi.
Quyidagi jadvalda ViewResolver iyerarxiyasi haqida batafsil ma'lumot berilgan:
| ViewResolver | Tavsif |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Qayta ishlash
Bir nechta resolver beanlarini e'lon qilib va kerak bo'lganda order xususiyatini o'rnatib, resolverlar zanjiri yaratishingiz mumkin. E'tibor bering, buyurtma xususiyati qanchalik yuqori bo'lsa, resolver zanjirda shunchalik kech joylashadi.
ViewResolver kontrakti ko'rinish topib bo'lmasa, null qaytarishi mumkinligini belgilaydi. Ammo JSP va InternalResourceViewResolver bilan bog'liq holda JSP mavjudligini aniqlashning yagona usuli RequestDispatcher dan foydalanib dispetcherlik qilishdir. Shuning uchun InternalResourceViewResolver ni umumiy resolver tartibida har doim oxirgi bo'lib joylashishi kerak.
Ko'rinishni aniqlashni sozlash Spring konfiguratsiyasiga ViewResolver beanlarini qo'shish kabi oddiy. MVC Config view resolver va kontrolsiyalash algoritmasiz HTML shablonlarni vizualizatsiya qilish uchun foydali bo'lgan kontrolerlarga maxsus konfiguratsiyani API taqdim etadi.
Yo'naltirish
Ko'rinish nomidagi maxsus redirect: prefiksi yo'naltirishni bajarishga imkon beradi. UrlBasedViewResolver (va uning subklasslari) buni kerakli yo'naltirish buyrug'i sifatida tan oladi. Ko'rinish nomining qolgan qismi yo'naltirish URL manzili hisoblanadi.
Oxirgi natija xuddi kontrolor RedirectView qaytargan kabi, ammo endi o'zi kontroler mantiqiy ko'rinish nomlari bilan ishlay oladi. Mantiqiy ko'rinish nomi (masalan, redirect:/myapp/some/resource) joriy servlet kontekstidan nisbatan yo'naltiradi, redirect:https://myhost.com/some/arbitrary/path kabi nom esa mutlaq URL manzilga yo'naltiradi.
Kontroler metodida @ResponseStatus annotatsiyasi mavjud bo'lsa, uning qiymati RedirectView tomonidan o'rnatilgan javob holatidan ustun keladi.
Yo'nalish o'zgartirish
Shuningdek, siz UrlBasedViewResolver va subklasslaridan foydalangan holda, oxir-oqibat forward: prefiksidan foydalanishingiz mumkin. Bu InternalResourceView yaratadi, u RequestDispatcher.forward() ni bajaradi. Shuning uchun ushbu prefiks InternalResourceViewResolver va InternalResourceView (JSP uchun) foydalanayotganda foydasiz, lekin boshqa ko'rinish texnologiyasidan foydalanayotgan bo'lsangiz va servlet/JSP konteyner bilan resursni majburiy ravishda yo'naltirmoqchi bo'lsangiz foydali bo'lishi mumkin. Shuni yodda tutingki, buning o'rniga ko'plab ko'rinish resolverlarini zanjirlayishingiz ham mumkin.
Kontent muvofiqligi
ContentNegotiatingViewResolver ko'rinishlarni o'zi aniqlamaydi, balki bu ishni boshqa ko'rinish resolverlariga topshiradi va mijoz so'ragan ko'rinishga o'xshash ko'rinishni tanlaydi. Ko'rinish Accept sarlavhasi yoki so'rov parametri (masalan, "/path?format=pdf") orqali aniqlanishi mumkin.
ContentNegotiatingViewResolver so'rovni qayta ishlash uchun mos View ni tanlaydi va bu orqali so'rov ma'lumot turlarini, Content-Type bilan, har bir ViewResolvers ga bog'langan View ni taqqoslaydi. Mos Content-Type ga ega bo'lgan birinchi View mijozga qaytariladi. Agar ViewResolver zanjiri mos ko'rinishni taqdim eta olmasa, DefaultViews xususiyatida belgilangan ko'rinishlar ro'yxatidan foydalaniladi. Ushbu oxirgi variant joriy resursning mos ko'rinishini vizualizatsiya qila oladigan yagona Views uchun mos keladi, mantiqiy ko'rinish nomidan qat'i nazar. Accept sarlavhasi o'rnini bosuvchi belgilarni o'z ichiga olishi mumkin (masalan, text/*), bu holda Content-Type text/xml bilan mos keladigan View mos keladi.
GO TO FULL VERSION