IT/development

[Spring]@ModelAttribute ์–ด๋…ธํ…Œ์ด์…˜

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2022. 11. 30.

๋ชฉ์ฐจ

    ์Šคํ”„๋ง @ModelAttribute

    ์Šคํ”„๋งMVC์˜ Controller๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Java Beans ๊ทœ์น™์— ๋งž๋Š” ๊ฐ์ฒด๋Š” ๋‹ค์‹œ ํ™”๋ฉด์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•จ
    ์ข์€ ์˜๋ฏธ์—์„œ Java Beans ๊ทœ์น™์€ ๋‹จ์ˆœํžˆ ์ƒ์„ฑ์ž๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋นˆ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, getter/setter๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋“ค์„ ์˜๋ฏธํ•จ
    ์•ž์˜ ์˜ˆ์ œ์—์„œ parameter๋กœ ์‚ฌ์šฉ๋˜์—ˆ๋˜ SampleDTO์˜ ๊ฒฝ์šฐ๋Š” Java Beans ๊ทœ์น™์— ๋งž๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ๋‹ค์‹œ ํ™”๋ฉด๊นŒ์ง€ ๊ฐ์ฒด๊ฐ€ ์ „๋‹ฌ๋˜์—ˆ์Œ(์ „๋‹ฌ ๋  ๋•Œ๋Š” ํด๋ž˜์Šค๋ช…์˜ ์•ž๊ธ€์ž๋Š” ์†Œ๋ฌธ์ž๋กœ ์ฒ˜๋ฆฌ๋จ)
    ๋ฐ˜๋ฉด ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ๋Š” parameter๋กœ ์„ ์–ธํ•˜๋”๋ผ๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™”๋ฉด๊นŒ์ง€ ์ „๋‹ฌ๋˜์ง€๋Š” ์•Š์Œ
    ์•„๋ž˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ SampleController์—์„œ method๋ฅผ ์ž‘์„ฑํ•œ ๋’ค ๋ธŒ๋ผ์šฐ์ €์—์„œ parameter์˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์„œ ํ˜ธ์ถœํ•ด ๋ณด๋ฉด dto์˜ ๊ฐ’์€ ํ™”๋ฉด์— ์ „๋‹ฌ๋˜์ง€๋งŒ, page์˜ ๊ฐ’์€ ํ™”๋ฉด์— ์ „๋‹ฌ๋˜์ง€ ์•Š์Œ

    ํ™”๋ฉด์—์„œ์˜ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด page์—๋Š” ์ถ”๊ฐ€ํ•œ ๊ฐ’์ด ์•ˆ ๋“ค์–ด์™”์Œ

    @ModelAttribute๋Š” ๊ฐ•์ œ๋กœ ์ „๋‹ฌ๋ฐ›์€ parameter๋ฅผ Model์— ๋‹ด์•„์„œ ์ „๋‹ฌํ•˜๋„๋ก ํ•  ๋•Œ ํ•„์š”ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ž„, @ModelAttribute๊ฐ€ ๊ฑธ๋ฆฐ Parameter๋Š” ํƒ€์ž…์— ๊ด€๊ณ„์—†์ด ๋ฌด์กฐ๊ฑด Model์— ๋‹ด์•„์„œ ์ „๋‹ฌ๋˜๋ฏ€๋กœ, parameter๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋จ

    SampleController์— ์ถ”๊ฐ€ํ•œ ๋ฉ”์„œ๋“œ์˜ parameter์— @ModelAttribute๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋จ, ๊ธฐ๋ณธ์ž๋ฃŒํ˜•์— @ModelAttribute๋ฅผ ์ ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋“œ์‹œ @ModelAttribute("๋ณ€์ˆ˜๋ช…") value(int page) ์ด๋Ÿฐ์‹์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•จ

    ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธ์ถœ ์‹œ ํ™”๋ฉด์— page์˜ ๊ฐ’์ด ์ž˜ ์ „๋‹ฌ๋œ ๊ฒƒ์ด ํ™•์ธ๋จ

    jsp์—์„œ Model์—์„œ ๋ฐ›์•„์˜จ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฑด ์•„๋ž˜์™€ ๊ฐ™์Œ

    ${"Controller์˜ Model๊ฐ์ฒด์—์„œ ์„ค์ •ํ•œ ๋ณ€์ˆ˜๋ช…์„ ์ž…๋ ฅ"}

    ๋Œ“๊ธ€