Model

All lectures for UZ purposes
Daraja, Dars
Mavjud

Siz @ModelAttribute annotatsiyasidan foydalanishingiz mumkin:

  • @RequestMapping annotatsiyali metodlar ichidagi metod argumenti sifatida, modeldan ob'ektni yaratish yoki unga kirish va uni WebDataBinder orqali so'rovga bog'lash uchun.

  • @Controller yoki @ControllerAdvice annotatsiyalangan sinflardagi metod darajasidagi annotatsiya sifatida, bu @RequestMapping annotatsiyali metod chaqirilishidan oldin modelni tashkillashtirishga yordam beradi.

  • @RequestMapping metodi uchun, qaytarish qiymati modelning atributi ekanligini belgilash.

Ushbu qismda, yuqoridagi roʻyxatning ikkinchi bandiga kiruvchi @ModelAttribute annotatsiyalangan metodlar koʻrib chiqiladi. Kontroller har qancha @ModelAttribute annotatsiyalangan metodlarga ega bo'lishi mumkin. Barcha shunday metodlar, xuddi shu kontrollerda @RequestMapping annotatsiyalangan metodlardan oldin chaqiriladi. @ModelAttribute annotatsiyalangan metod, @ControllerAdvice annotatsiyasi orqali kontrollerlar orasida ham foydalanilishi mumkin.

@ModelAttribute annotatsiyalangan metodlar moslashuvchan metod imzolariga ega. Ular, @RequestMapping annotatsiyalangan metodlar kabi ko'p argumentlarni qo'llab-quvvatlaydi, faqat @ModelAttribute annotatsiyasi yoki so'rovning tanasi bilan bog'liq narsalar bundan mustasno.

Quyidagi misolda, @ModelAttribute annotatsiyalangan metoda misol keltirilgan:

Java
@ModelAttribute
public void populateModel(@RequestParam String number, Model model) {
    model.addAttribute(accountRepository.findAccount(number));
    // ko'proq qo'shamiz ...
}
Kotlin
@ModelAttribute
fun populateModel(@RequestParam number: String, model: Model) {
    model.addAttribute(accountRepository.findAccount(number))
    // ko'proq qo'shamiz ...
}

Quyidagi misolda faqat bitta atribut qo'shiladi:

Java
@ModelAttribute
public Account addAccount(@RequestParam String number) {
    return accountRepository.findAccount(number);
}
Kotlin
@ModelAttribute
fun addAccount(@RequestParam number: String): Account {
    return accountRepository.findAccount(number)
}
Agar nom aniq belgilanmagan bo'lsa, standart nom Object turi asosida aniqlanadi, bu Conventions javadoc-da tushuntirilgan. Har doim addAttribute metodining ortiqcha yuklangan varianti yoki @ModelAttribute annotatsiyasidagi name atributi orqali aniq nom berishingiz mumkin (qaytariladigan qiymat uchun).

Siz @ModelAttribute annotatsiyasidan metod darajasida @RequestMapping annotatsiyalangan metodlar uchun ham foydalanishingiz mumkin, va bu holda @RequestMapping annotatsiyalangan metodning qaytariladigan qiymati modelning atributi sifatida talqin qilinadi. Odatda bu kerak emas, chunki bu HTML-kontrollerlar uchun standart ishlash logikasi, faqat qaytariladigan qiymat String bo'lmasa, aks holda u ko'rinish nomi sifatida talqin qilinadi. @ModelAttribute annotatsiyasi model atributi nomini sozlashi mumkin, quyidagi misolda koʻrsatilganidek:

Java
@GetMapping("/accounts/{id}")
@ModelAttribute("myAccount")
public Account handle() {
    // ...
    return account;
}
Kotlin
@GetMapping("/accounts/{id}")
@ModelAttribute("myAccount")
fun handle(): Account {
    // ...
    return account
}
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION