@RequestMapping
deprekler bilen işlemek üçin usullaryň çeýe dizaýny bar we dolandyryjy usulynyň goldanýan argümentlerinden we yzyna berilýän bahalaryndan saýlap bilerler.
Usulyň argumentleri
Aşakdaky tablisada dolandyryjynyň usulynyň goldanýan argumentleri beýan edilýär. Reaktiw görnüşler hiç bir argumente goldaw berilmeýär.
java.util.Optional
JDK 8-den, required
atributy bolan belliklerle bilelikde, usulyň argumenti hökmünde goldanýar (meselem, @RequestParam
, @RequestHeader
we beýlekiler) we required=false
bilen deňdir.
Dolandyryjy usulyň argumenti | Beýannama |
---|---|
|
Talap parametrlerine we sessiýanyň atributlaryna taýyn görnüşde girmäge mümkinçilik berýär, Servlet API göni ulanylmazdan. |
|
Islendik belli bir talapyň ýa-da jogabynyň görnüşini saýlamak üçin niýetlenendir – meselem, |
|
Sessiýanyň bolmagyny üpjün edýär. Şeýlelikde, beýle argument hiç haçan |
|
Servlet 4.0-da HTTP/2 resurslaryny itermek üçin itekleýän gurluş guralynyň API-y. Servlet spesifikasiýasyna görä, girizilen |
|
Şu wagtky autentifikasiýalanan ulanyjy – belli bolsa, Bu argument kesgitli tanalýanok, egerde bir kiçi tanlaýjy ony anyk tanamak üçin ulanylsa, soňra |
|
Talapyň HTTP usuly. |
|
Talapyň häzirki lokal konfigurasiýasy, iň anyk elýeterli |
|
Talap bilen baglanyşykly wagt zolaklary, |
|
Servlet API-da görkezilýän talapyň çig bedenine girmegi üpjün etmek üçin niýetlenendir. |
|
Servlet API-da açyk bolan jogapyň çig bedenine girmegi üpjün etmek üçin niýetlenendir. |
|
URI identifikatorynyň şablon üýtgeýänlerine girmegi üpjün etmek üçin niýetlenendir. |
|
URI identifikatorlarynyň ýoly segmentlerinde "ad-soň" toparlaryna girmegi üpjün etmek üçin niýetlenendir. |
|
Servlet talap parametrlerine girmegi üpjün etmek üçin niýetlenendir, köp sahypaly faýllaryň goşuldygy ýaly. Parametrleriň bahalary usulyň argumentleriniň görkezilen görnüşine öwrülýär. Adaty parametr bahalary üçin |
|
Talap başlyklaryna girmegi üpjün etmek üçin niýetlenendir. Başlyk bahalary usulyň görkezilen argument görnüşine öwrülýär. |
|
Cookie bahalaryna girmegi üpjün etmek üçin niýetlenendir. Cookie bahalary usulyň görkezilen argument görnüşine öwrülýär. |
|
HTTP talap bedeni girmegi üpjün etmek üçin niýetlenendir. Beden mazmuny |
|
Başlyklar we talap bedeni girmegi üpjün etmek üçin niýetlenendir. Beden |
|
Köp bölek/form-data görnüşindäki talapyň bir elementi girmegi üpjün etmek we şol bölümiň bedeni |
|
HTML dolandyryjyda ulanylýan we görkezijiniň wizualizasiýasynyň bir bölegi hökmünde şablonlarda görkezilen modele girmegi üpjün etmek üçin niýetlenendir. |
|
Gönükdirme ýagdaýynda ulanylýan atributlary kesgitleýär (meselem, sorag setirine goşulýar), gönükdirme talabyň gelendiginde wagtlaýyn saklanjak flash atributlar. |
|
Modelde bar bolan bir attribute girmegi üpjün etmek üçin niýetlenendir (onuň nusgasy ýok bolsa döredilýär), maglumat birleşdirmegi we barlagy bilen bilelikde. Üns beriň, |
|
Komanda obýektiňin (meselem, @ModelAttribute bilen bellik edilen argument) ýa-da @RequestBody ýa-da @RequestPart annotasiýalary bilen barlanylan argumentleriň näsazlyklarynyň barlaglaryň näsazlyklaryna girmegi üpjün etmek üçin niýetlenendir. |
|
Formanyň işlenip gutaranlygyny bellik etmek üçin niýetlenendir, bu @SessionAttributes annotasiýasy bilen klass derejesinde bellik edilen sessiýa atributlaryny arassalamagy döredýär. |
|
Talapyň häzirki haýsyda, ulgamy, kontekst ýoly bilen baglanyşykly URL taýýarlamak we servletiň wizualizasiýasynyň göni komponenti üçin niýetlenendir. |
|
Başgaça |
|
Talap atributyna girmegi üpjün etmek üçin niýetlenendir. |
Haýsy-da bolsa başga bir argument |
Eger usulyň argumenti ýokardaky bahalaryň hiç birine laýyk gelmeýän bolsa we BeanUtils#isSimpleProperty tarapyndan kesgitlenişi ýaly ýönekeý görnüş bolsa, ol |
Yzyna berilýän bahalar
Aşakdaky tablisada dolandyryjy usulynyň goldanýan yzyna berilýän bahalary beýan edilýär. Reaktiw görnüşler ähli yzyna berilýän bahalar üçin goldanylýar.
Dolandyryjy usulynyň yzyna berilýän bahasy | Beýannama |
---|---|
|
Yzyna berilýän baha |
|
Başlyklary we bedeni öz içine alýan doly jogap yzyna berilýär, |
|
Beden bolmazdan başlyklary bilen jogap yzyna berilýän maksat üçin niýetlenendir. |
|
|
|
Ekzemplýar |
|
Modelle goşulan atributlar, |
|
Modelle goşulan atribut, Üns beriň, |
|
Ulanylan görnüş we modeliň atributlary we zerur bolsa, jogap statusy. |
|
Eger-de usul Ýokardaky maglumatlaryň hiç hili dogry däl bolsa, |
|
Öňki yzyna berilýän bahalaryň islendikini amatsyz görnüşde, islendik sapardan getirýär – meselem, haýsydyr bir wakanyň netijesinde ýa-da alternatiw ýagdaýda. |
|
Spring MVC tarapyndan dolandyrylan saparda beýlekileriň asynkronylykda yzyna berilýän bahalaryň islendikini getirýär. |
|
|
|
|
|
Jogap |
Reaktiw görnüşler - Reactor, RxJava, ýa-da |
Akym skriptlərində (meselem, |
Haýsy-da bolsa başga bir yzyna berilýän baha |
Aşaky tablisalaryň hiç birine laýyk gelmeýän we |
Görnüş öwrülişigi
Belli bir annotasiýaly dolandyryjy usulynyň girizme talaplaryny görkezýän (meselem, @RequestParam
, @RequestHeader
, @PathVariable
, @MatrixVariable
we @CookieValue
ýaly String
-e esaslanan) argumentler awtomatik görnüş öwrülişik talap edip biler, eger-de argument String
diýip kesgitlenmedik bolsa.
Şeýle ýagdaýlarda görnüş öwrülişik awtomatik gurnalan öwrüjiçlere esaslanýan awtomatik öwrüilýär. Adaty ýagdaýda int
, long
, Date
we beýlekiler ýaly ýönekeý görnüş goly bar. Siz görnüş öwrülişigi WebDataBinder
arkaly ýa-da FormattingConversionService
-de Formatters
-i registrirläp biler.
Görnüş öwrülişigini işleýän iş geň galdyryjy meýilnamasy ýaly bolýar, eger null
görnüş öwrülişiginiň netijesi hökmünde gurulsa. Bu Long
, UUID
we başga maksat görnüşleri ýaly bolup biler. Eger size null
bardangulystrak, бәлки бери required
belgisi bilen ya @Nullable
diýlip kesgitlenmeli.
Versiýa 5.3-den başlap, anyk däl argumentler görnüş öwrülişiginden soň hem amal edilýär. Ähli ýagdaýda işlän usulyň void görnüş bellenýän bolsa, şol usul ýokaryda baglaşylanlar bilen doly işlenýär. Bu öňki ýagdaýlar bilen baglanyşykly ähli ýagdaýlar üçin öňki ýagdaýlar doly ýagdaýlarda.
Meselem, @PathVariable
annotasiýasynda hökman gerekdir,. Şu sandan soň null
görnüş öwrülişigi awtomatik ýagdaýda baştutat üçin zerur bolup biler, sebäbi 'ýok' başládaplatform döredilip bolar, şol sebäpli Missing…Exception
görnüşi döredilýär.
Matriks üýtgeýänleri
RFC 3986 ýoly segmentlerde "ad-soň" toparlaryny beýan edýär. Spring MVC-de biz olary "matrix üýtgeýänleri" diýip atlandyrýarys, "köne ýazgy" Tim Berners-Lee tarapyndan döredilen ýokarda, ol URI identifikatorlarynyň ýol parametri bolup biler.
Matrix üýtgeýänleri islendik ýol segmentsi üçin bolup biler, her bir üýtgeýän nokat bilen aýrylýar we birnäçe bahalar, we birnäçe bahalar-dele at bilen aýrylýar (meselem, /cars;color=red,green;year=2012
). Şeýle hem, birnäçe bahalar birnäçe üýtgeýän atlary bilen görkezilip bilner (meselem, color=red;color=green;color=blue
).
Eger URL-de matrix üýtgeýänler bolar diýip umyt edilse, bir dolandyryjy usulyň talap kartasyna matrix üýtgeýänleriň içeriklerini maska ýapmagy, matrix üýtgeýänleriň buýruklary we bar bolmagy bilen baglanyşykly talaplaryň üýtgeýänlerine maska ýapmagy üpjün etmeli. Takyk mysalda matrix üýtgeýäniň ulanyşy görkezilýär:
// GET /pets/42;q=11;r=22
@GetMapping("/pets/{petId}")
public void findPet(@PathVariable String petId, @MatrixVariable int q) {
// petId == 42
// q == 11
}
// GET /pets/42;q=11;r=22
@GetMapping("/pets/{petId}")
fun findPet(@PathVariable petId: String, @MatrixVariable q: Int) {
// petId == 42
// q == 11
}
Tutuş ýol segmentleri matrix üýtgeýänleri bolup biler, käwagt matrix üýtgeýäniň haýsy üýtgeýäniň ýol üýtgeýäni bolmalydygyny kesgitlemek gerek bolup biler. Aşakdaky mysalda munuň nähili ediljekdigi görkezilýär:
// GET /owners/42;q=11/pets/21;q=22
@GetMapping("/owners/{ownerId}/pets/{petId}")
public void findPet(
@MatrixVariable(name="q", pathVar="ownerId") int q1,
@MatrixVariable(name="q", pathVar="petId") int q2) {
// q1 == 11
// q2 == 22
}
// GET /owners/42;q=11/pets/21;q=22
@GetMapping("/owners/{ownerId}/pets/{petId}")
fun findPet(
@MatrixVariable(name = "q", pathVar = "ownerId") q1: Int,
@MatrixVariable(name = "q", pathVar = "petId") q2: Int) {
// q1 == 11
// q2 == 22
}
Matrix üýtgeýäni hökman däl diýip kesgitlenip bilner we aşakdaky mysalda görkezilişi ýaly deslapky baha belgilenip bilner:
// GET /pets/42
@GetMapping("/pets/{petId}")
public void findPet(@MatrixVariable(required=false, defaultValue="1") int q) {
// q == 1
}
// GET /pets/42
@GetMapping("/pets/{petId}")
fun findPet(@MatrixVariable(required = false, defaultValue = "1") q: Int) {
// q == 1
}
Ähli matrix üýtgeýänlerini almak üçin, aşakdaky mysalda görkezilişi ýaly MultiValueMap
-i ulanyp bolýar:
// GET /owners/42;q=11;r=12/pets/21;q=22;s=23
@GetMapping("/owners/{ownerId}/pets/{petId}")
public void findPet(
@MatrixVariable MultiValueMap<String, String> matrixVars,
@MatrixVariable(pathVar="petId") MultiValueMap<String, String> petMatrixVars) {
// matrixVars: ["q" : [11,22], "r" : 12, "s" : 23]
// petMatrixVars: ["q" : 22, "s" : 23]
}
// GET /owners/42;q=11;r=12/pets/21;q=22;s=23
@GetMapping("/owners/{ownerId}/pets/{petId}")
fun findPet(
@MatrixVariable matrixVars: MultiValueMap<String, String>,
@MatrixVariable(pathVar="petId") petMatrixVars: MultiValueMap<String, String>) {
// matrixVars: ["q" : [11,22], "r" : 12, "s" : 23]
// petMatrixVars: ["q" : 22, "s" : 23]
}
Matrix üýtgeýänleriň ulanylmagyny işjeňleşdirmek zerur. Java-da MVC konfigurasiýasynda UrlPathHelper
-i removeSemicolonContent=false
ýerine Path Matching arkaly gurnalyň. XML görnüşindäki MVC at giňişliginde <mvc:annotation-driven enable-matrix-variables="true"/>
hökmünde gurnalyň.
@RequestParam
Servlet talap parametri (meselem, talap parametrleri ýa-da forma maglumatlary) usulynyň argumentine baglamak üçin @RequestParam
annotasiýasyny ulanyp bilersiňiz.
Aşakdaky mysalda munuň nähili edilýändigi görkezilýär:
@Controller
@RequestMapping("/pets")
public class EditPetForm {
// ...
@GetMapping
public String setupForm(@RequestParam("petId") int petId, Model model) {
Pet pet = this.clinic.loadPet(petId);
model.addAttribute("pet", pet);
return "petForm";
}
// ...
}
petId
baglamak üçin@RequestParam
annotasiýasynyň ulanylmagy.
import org.springframework.ui.set
@Controller
@RequestMapping("/pets")
class EditPetForm {
// ...
@GetMapping
fun setupForm(@RequestParam("petId") petId: Int, model: Model): String {
val pet = this.clinic.loadPet(petId);
model["pet"] = pet
return "petForm"
}
// ...
}
petId
baglamak üçin@RequestParam
annotasiýasynyň ulanylmagy.Accept-Encoding
başlygy bahalary alynýar.Keep-Alive
başlygy bahalary alynýar.Accept-Encoding
başlygy bahalary alynýar.Keep-Alive
başlygy bahalary alynýar.JSESSIONID
cookie bahasynyň alynmagy.JSESSIONID
cookie bahasynyň alynmagy.-
@ModelAttribute bellikli usulynyň attribute modeline goşulmagy bilen modelden çykarylýar.
-
HTTP sessiýasyndan çykarylýar, eger klas derejeli
@SessionAttributes
annotasiýasy bilen model attribute kesgitlenen bolsa. -
Anyklanmaly bir
Converter
bilen talap edilen atribut modeliň kesgitlenen talap bahasy bilen meňzeş wagtynda elmydama getirilýär, meselem, ýol üýtgeýänini ýa-da sorag parametrini alamatlandyrýar (aşakdaky mysala serediň). -
Default konstruktory arkaly döredilýär.
-
Girilýän servlet talap elementleri bilen gabat gelýän argumentleri bilen 'birinji derejeli' konstruktory arkaly döredilýär. Argument atlary JavaBeans klaslarynda
@ConstructorProperties
annotasiýasy ýa-da byte kodda serwer tarapyndan saklanýan wagtynda kesgitlenýär. @ModelAttribute
bilenBindingResult
goşa goşulýar.@ModelAttribute
bilenBindingResult
goşa goşulýar.- @ModelAttribute(binding=false).
- @ModelAttribute(binding=false).
Pet
'iň nusgasy barlanýar.@SessionAttributes
annotasiýasynyň ulanylşy.@SessionAttributes
annotasiýasynyň ulanylşy.- Pet bahasy servlet sessiýasynda saklanýar.
- Pet bahasy servlet sessiýasyndan arassalanýar.
- Pet bahasy servlet sessiýasynda saklanýar.
- Pet bahasy servlet sessiýasyndan arassalanýar.
@SessionAttribute
annotasiýasynyň ulanylşy.@RequestAttribute
annotasiýasynyň ulanylşy.@RequestAttribute
annotasiýasynyň ulanylşy.
Adaty ýagdaýda bu annotasiýany ulanaýan usulyň parametrleri hökman bolar, emma usulyň parametriniň hökman bolmaýandygyny belliklemek üçin, @RequestParam
annotasiýasynyň required
flagyny false
ýa-da java.util.Optional
sarp ediji bilen belläň.
Eger görkezilen maksat usulyntiň parametri String
bolmasa, görnüş öwrülişigi awtomatik amal edilýär.
Eger argument görnüşi massaýlap ýa-da sanaw görnüşinde kesgitlenmedik bolsa, birnäçe parametr bahasy bir parametr ady üçin çözüler.
Eger @RequestParam
annotasiýasy Map<String, String>
ýa-da MultiValueMap<String, String>
görnüşinde kesgitlenmedik bolsa, Map her parametr ady üçin talap parametr bahalary bilen doldurylýar.
Üns beriň, @RequestParam
annotasiýasynyň ulanylmagy şert däl (meselem, atributlaryň kesgitlenmegi üçin). Adaty ýagdaýda, islendik anyklanmadyk anyk geçirmeýän argument ýönekeý bahalar (BeanUtils#isSimpleProperty tarapyndan kesgitlenişi ýaly) üçin @RequestParam
ýaly işleýär.
@RequestHeader
Dolandyryjy usulyň argumentine talap başlygyna baglamak üçin @RequestHeader
annotasiýasy ulanyp bolýar.
Aşakdaky talap başlyklary bilen göz önüne düzüň:
Host localhost:8080 Accept text/html,application/xhtml+xml,application/xml;q=0.9 Accept-Language fr,en-gb;q=0.7,en;q=0.3 Accept-Encoding gzip,deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 300
Aşakdaky mysalda Accept-Encoding
we Keep-Alive
başlyklarynyň bahalarynyň nähili alynjakdygy görkezilýär:
@GetMapping("/demo")
public void handle(
@RequestHeader("Accept-Encoding") String encoding,
@RequestHeader("Keep-Alive") long keepAlive) {
//...
}
@GetMapping("/demo")
fun handle(
@RequestHeader("Accept-Encoding") encoding: String,
@RequestHeader("Keep-Alive") keepAlive: Long) {
//...
}
Eger görkezilen maksat usulyň parametri String
ýa-da HttpHeaders
bolmasa, görnüş öwrülişigi awtomatik amala aşyrylyar.
Eger @RequestHeader
annotasiýasy Map<String, String>
, MultiValueMap<String, String>
, ýa-da HttpHeaders
bilen ulanylýan bolsa, Map ähli başlyk bahalary bilen doldurylýar.
@RequestHeader("Accept")
atly usulyň parametri
String
formasynda bolýan, hem-de
String[]
ýa-da
List<String>
görnüşinde bolup biler.
@CookieValue
HTTP cookie maglumatlarynyň bahalaryny dolandyryjy usulyň argumentine baglamak üçin @CookieValue
annotasiýasyny ulanyp bilersiňiz.
Aşakdaky cookie bilen talapy göz öňüne getiriň:
JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84
Aşakdaky mysalda cookie bahalarynyň nähili alynjakdygy görkezilýär:
@GetMapping("/demo")
public void handle(@CookieValue("JSESSIONID") String cookie) {
//...
}
@GetMapping("/demo")
fun handle(@CookieValue("JSESSIONID") cookie: String) {
//...
}
Eger görkezilen maksat usulyň parametri String
bolmasa, görnüş öwrülişigi awtomatik amala aşyrylyar.
@ModelAttribute
@ModelAttribute annotasiýasy dolandyryjy usulynyň argumenti üçin modelden attribute almak ýa-da ol ýok bolsa atribut nusgasyny döretmek üçin ulanylýar. Model attribute HTTP servlet talap parametrlerinden bahalar kabul etmegi hem öz içine alýar, göräýmäge birmeňzeş sahypalary bilen meňzeş atlar düşüner. Bu maglumatlary baglamak diýilýär we aýratyn talap parametrlerini we forma sahypalaryny analizlemek we öwrülişik etmek esasy meseleleri çözmekden gorap durýar. Aşakdaky mysalda munuň nähili ediljekdigi görkezilýär:
@PostMapping("/owners/{ownerId}/pets/{petId}/edit")
public String processSubmit(@ModelAttribute Pet pet) {
// method logic...
}
@PostMapping("/owners/{ownerId}/pets/{petId}/edit")
fun processSubmit(@ModelAttribute pet: Pet): String {
// method logic...
}
Yzky belgili Pet
nusgasyna aşakdaky usullar bilen ýetip bolýar:
@ModelAttribute annotasiýasynyň ulanylmagynyň alternatiwasy we model attribute mümkinçiligi bilen üpjünçilik üpjün edilmeginiň alternatiwasy Converter<String, T>
ulanylmagyny üpjün etmegi arkaly bolýar. Bu belli bir baha diýiniň attribute modeliniň ady talap bahasy attribute ady bilen meňzeş bolanda we model attribute görnüşine Converter
bardygynda bolýar. Aşakdaky mysalda model attribute ady - account
, URI identifikatory ýol üýtgeýäniniň account
we String
in Account
formatda registrirlenen Converter
tarapyndan ýüklenen Account
bolanlygynda:
@PutMapping("/accounts/{account}")
public String save(@ModelAttribute("account") Account account) {
// ...
}
@PutMapping("/accounts/{account}")
fun save(@ModelAttribute("account") account: Account): String {
// ...
}
Öz görnüş nusgasyny alan soň, Data Bindings dolandyryş işlemesi başa çykýar. WebDataBinder
servlet talap parametrleriniň (sorag parametrleri we forma sahypalary) atlaryny nyşana taýýarlanan obýektiň sahypadagüzenleşdirýär. Öndürilen sahypalar öwrülişigiň görnüşi bilen talap edilýär, zerur gerek bolsa.
Data Bindsings näsazlyklara getirýär, gadyr-gamat bolmanda BindException
ýüze çykýar. Ýöne dolandyryjy usulyň argumenti BindingResult
getirilip, @ModelAttribute bilen belgilenenden soň, aşakdaky mysalda görkezilişi ýaly barlamak üçin ulanyp boljakneteýar:
@PostMapping("/owners/{ownerId}/pets/{petId}/edit")
public String processSubmit(@ModelAttribute("pet") Pet pet, BindingResult result) {
if (result.hasErrors()) {
return "petForm";
}
// ...
}
@PostMapping("/owners/{ownerId}/pets/{petId}/edit")
fun processSubmit(@ModelAttribute("pet") pet: Pet, result: BindingResult): String {
if (result.hasErrors()) {
return "petForm"
}
// ...
}
Kähalatlarda model attribute döwrüniçe ulanyp bolmazdan öň, model attributy doly elýeterli bolmaly bolýar. Şeýle ýagdaýlarda, @ModelAttribute(binding=false) goýýança kontrolleýjide Model
girmek ýa-da interfeýsi gönüden-göni ulanmak mümkinçiligi bar.
@ModelAttribute
public AccountForm setUpForm() {
return new AccountForm();
}
@ModelAttribute
public Account findAccount(@PathVariable String accountId) {
return accountRepository.findOne(accountId);
}
@PostMapping("update")
public String update(@Valid AccountForm form, BindingResult result,
@ModelAttribute(binding=false) Account account) {
// ...
}
@ModelAttribute
fun setUpForm(): AccountForm {
return AccountForm()
}
@ModelAttribute
fun findAccount(@PathVariable accountId: String): Account {
return accountRepository.findOne(accountId)
}
@PostMapping("update")
fun update(@Valid form: AccountForm, result: BindingResult,
@ModelAttribute(binding = false) account: Account): String {
// ...
}
Maglumatlar birlikden baglanyşma awtomatik ulanmak üçin - annotasiýasy javax.validation.Valid
ýa-da Spring-dan @Validated
ulanyp biler. Aşakdaky mysalda munuň nähili edilýändigi görkezilýär:
@PostMapping("/owners/{ownerId}/pets/{petId}/edit")
public String processSubmit(@Valid @ModelAttribute("pet") Pet pet, BindingResult result) {
if (result.hasErrors()) {
return "petForm";
}
// ...
}
@PostMapping("/owners/{ownerId}/pets/{petId}/edit")
fun processSubmit(@Valid @ModelAttribute("pet") pet: Pet, result: BindingResult): String {
if (result.hasErrors()) {
return "petForm"
}
// ...
}
Üns beriň, @ModelAttribute
annotasiýasy hökman däl (meselem, attributlaryň kesgitlenmegi üçin). Adaty ýagdaýda, islendik bahasy anyklanmaýandyklaryna garamazdan BeanUtils#isSimpleProperty tarapyndan kesgitlelen ýaly bolup @ModelAttribute
ýaly işleýär.
@SessionAttributes
@SessionAttributes
annotasiýasy konduktor HTTP servlet-iň sessiýasynda talaplar arasynda model atributlaryny saklamak üçin ulanylýar. Bu tolkun derejeli annotation, model atributlary bilen ulanylýan görkeziji kontrolleýýjiler tarapyndan ulanylýar. Bu ýerde adatça ulanylýan model attributlarynyň atlary ýa-da modeliň atributlarynyň görnüşleri görkezilýär, ýerli görünmek üçin sessiýaňda saklanýar we görkezilýär, ýerli.
Aşakdaky mysalda @SessionAttributes
annotasiýasynyň ulanylyşy görkezilýär:
@Controller
@SessionAttributes("pet")
public class EditPetForm {
// ...
}
@Controller
@SessionAttributes("pet")
class EditPetForm {
// ...
}
Ilkinji talabyň wagtynda, pet
model attribute modeline goşulsa, awtomatik ýagdaýda yza çekilýär we HTTP servlet sessiýasynda saklanýar. Şeýlelikde ol başga bir kontrolleýjiniň usuly SessionStatus
usulyň argumentini ulanýança saklanýar, we bu aşakdaky mysalda görkezilişi ýaly arassalaýar:
@Controller
@SessionAttributes("pet")
public class EditPetForm {
// ...
@PostMapping("/pets/{id}")
public String handle(Pet pet, BindingResult errors, SessionStatus status) {
if (errors.hasErrors) {
// ...
}
status.setComplete();
// ...
}
}
@Controller
@SessionAttributes("pet")
class EditPetForm {
// ...
@PostMapping("/pets/{id}")
fun handle(pet: Pet, errors: BindingResult, status: SessionStatus): String {
if (errors.hasErrors()) {
// ...
}
status.setComplete()
// ...
}
}
@SessionAttribute
Birinjiden ulanylan we öz içine üçin doly üpjün edilmedik atributlara elýeterli bolmaýan ýagdaýlarda tölkeliaryň usulynyň argumenti hökmünde @SessionAttribute
annotasiýasyny ulanyp bolýar. Bu şeýle bir görnüşdäki global dolandyrylýan atributlary (meselem, filtler bilen üpjün edilen) saklamak üçin ulanylýar. Aşakdaky mysalda görkeziň:
@RequestMapping("/")
public String handle(@SessionAttribute User user) {
// ...
}
@RequestMapping("/")
fun handle(@SessionAttribute user: User): String {
// ...
}
Wagtlaýyn saklanýan attributlaryň talap edilmesi ýa-da goşulmagy üçin dolandyryjy usulda org.springframework.web.context.request.WebRequest
ýa-da javax.servlet.http.HttpSession
girizmegi göz öňünde tutuň.
Dolandyryjynyň iş meýilnamasy ýaly sessiýada wagtlaýyn saklamak maksatlary üçin @SessionAttributes
annotasiýasy ulanylmagyny göz öňünde tutuň.
@RequestAttribute
Bu @SessionAttribute
ýaly, öňden bar bolan talap attributlaryna geçmek üçin @RequestAttribute
annotasiýasynyň ulanylmagy mümkin, käwagtlar talap bilen bir ýerdäki servlet Filter
ýa-da HandlerInterceptor
ýaly:
@GetMapping("/")
public String handle(@RequestAttribute Client client) {
// ...
}
@GetMapping("/")
fun handle(@RequestAttribute client: Client): String {
// ...
}
Gönükdirme atributlary
Adaty ýagdaýda, ähli model attributlary URL-niň ýagdaýda köki URI şablonynyň görkezişini ulanýar. Galan atributlardan, primitiw görnüşde ýa-da ýygyndylarda ýa-da primitiw görnüşler bolan massaýwaklar kömege ýöňkelmegine awtomatik ýagdaýda goşulýar.
Primitiw görnüşleriň atributlarynyň goşulmagy adatça ähli talap üçin talap edilýär, eger gönükdirme üçin görülmeli model attributy bolsa. Emma annotasiýaly kontrolleýjilerde görünmek üçin
GO TO FULL VERSION