Spring MVC интерфейсҳои ViewResolver
ва View
-ро муайян мекунад, ки имкон медиҳад, ки моделҳо дар броузер намоиш дода шаванд, бе он ки шумо ба технологияҳои мушаххаси пешкаш вобаста бошед. ViewResolver
муносибати байни номҳои пешкаш ва пешкашҳои воқеиро таъмин мекунад. View
ба тайёр кардани маълумот пеш аз интиқол ба технологияи мушаххаси пешкаш машғул аст.
Дар ҷадвали зерин маълумоти бештар дар бораи иерархия ViewResolver
пешниҳод карда мешавад:
ViewResolver | Тавсиф |
---|---|
|
Пешфосилаи |
|
Амалӣкунии соддаи интерфейси |
|
Пешфосилаи муфиди |
|
Пешфосилаи муфиди |
|
Амалӣкунии интерфейси |
|
Амалӣкунии интерфейси |
Коркарди маълумот
Шумо метавонед занҷири эътирофкунандаҳои пешкашро созед, бо эълон кардани зиёда аз як bean-и эътирофкунанда ва, агар лозим бошад, танзим кардани хосияти order
барои муайян кардани тартиб. Ба ёд оред, ки ҳар қадаре, ки хосияти тартиб баланд бошад, эътирофкунандаи пешкаш дертар дар занҷир ҷойгир аст.
Шартномаи ViewResolver
муайян мекунад, ки он метавонад null баргардонад, то ки муайян шавад, ки пешкашро ёфтан мумкин нест. Аммо дар ҳолати истифодаи JSP ва InternalResourceViewResolver
танҳо усул барои маълум кардан, ки оё JSP вуҷуд дорад, ин иҷрои диспетчеризатсия тавассути RequestDispatcher
аст. Аз ин рӯ, ҳамеша лозим аст, ки InternalResourceViewResolver
дар конфигуратсия охиринтар дар тартиби умумии эътирофкунандаҳои пешкаш ҷойгир бошад.
Амалигардонии эътирофи пешкашҳо осон аст, ҳамон тавр ки beans-и ViewResolver
-ро ба конфигуратсияи Spring илова кунем. MVC Config API махсуси конфигуратсияро барои эътирофкунандаҳои пешкаш пешниҳод мекунад ва барои илова кардани контроллерҳои пешкаш, ки алгоритм надоранд, ки барои намоиши шаблони HTML без алгоритм муфиданд.
Азнавравонадан
Префикси махсуси redirect:
дар номи пешкаш имкон медиҳад, ки азнавравонадан иҷрошаванда бошад. UrlBasedViewResolver
(ва пешфосилаҳои он) инро ҳамчун фармони барои иҷро кардани азнавравонадани зарурӣ мешиносад. Боқимондаи номи пешкаш URL-и азнавравонадан аст.
Натиҷаи ниҳоӣ ин ҳамон тавре аст, ки гӯё контроллер RedirectView
-ро бармегардонад, лекин акнун худи контроллер метавонад бо номҳои мантиқии пешкаш кор кунад. Номи мантиқии пешкаш (масалан, redirect:/myapp/some/resource
) нисбат ба контексти ҷории servlet азнавравонаданро иҷрошаванда мекунад, дар ҳоле ки номи, мисли redirect:https://myhost.com/some/arbitrary/path
, ба URL-и мутлақ азнавравонадан мекунад.
Ба назар гиред, ки агар усули контроллер бо @ResponseStatus
аннотатсия карда шуда бошад, арзиши аннотатсия нисбат ба статуси ҷавоб, ки RedirectView
муқаррар мекунад, афзалият дорад.
Пешнинҳодкунии захира
Шумо инчунин метавонед аз префикси махсуси forward:
барои номҳои пешкаш истифода баред, ки дар охир UrlBasedViewResolver
ва пешфосилаҳо гуфта мешавад. Ин InternalResourceView
-ро месозад, ки RequestDispatcher.forward()
-ро иҷрошаванда мекунад. Аз ин рӯ, ин префикс ҳангоми истифодаи InternalResourceViewResolver
ва InternalResourceView
(барои JSP) бесамар аст, лек шояд муфид бошад, агар технологияи дигари пешкаш истифода шавад, лек ҳанӯз лозим бошад, ки захира ба таври ҷиддӣ барои коркард ба контейнерҳои servlet/JSP равона карда шавад. Ба назар гиред, ки аз ҷои ин, метавон занҷири якчанд эътирофкунандаҳои пешкашро васл кард.
Созишномаи мазмун
ContentNegotiatingViewResolver
худи пешкашҳоро намешиносад, балки ин корро ба дигар эътирофкунандаҳои пешкаш вогузор мекунад ва пешкаше, ки муштари мехоҳад, интихоб мекунад. Пешкаш метавонад аз сарлавҳаи Accept
ё аз параметри дархост (масалан, "/path?format=pdf"
) муайян карда шавад.
ContentNegotiatingViewResolver
барои коркарди дархост бо муқоиса кардани намудҳои маълумоти дархост бо намуди маълумот (ҳамчунин чун Content-Type
маълум) пешкаши мувофиқро интихоб мекунад, ки бо View
-и алоқаманди ҳар яке аз ViewResolvers
-и он дастгирӣ карда мешавад. Аввалин View
дар рӯйхат, ки Content-Type
-и мувофиқ дорад, пешкашро ба муштарӣ бармегардонад. Агар занҷири ViewResolver
натавонад пешкаши мувофиқро диҳад, рӯйхати пешкашҳое, ки дар хосияти DefaultViews
муқаррар шудааст, истифода мешавад. Ин варианти охирин барои якка Views
муфид аст, ки метавонанд пешкаши мувофиқи захираи ҳозираро мустақил аз номи мантиқии пешкаш намоиш диҳанд. Сарлавҳаи Accept
метавонад вахшиҳо (масалан, text/*
) дошта бошад, дар ин ҳолат, View
, ки Content-Type
-и он text/xml
мебошад, мувофиқ мешавад.
GO TO FULL VERSION