๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์˜ค๋ฅ˜ ํ•ด๊ฒฐ

jsp <form:errors> ์ถœ๋ ฅ ์•ˆ ๋˜๋Š” ๋ฌธ์ œ

by syLim___ 2024. 3. 4.
728x90

 

/login/loginForm.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" trimDirectiveWhitespaces="true" session="false" %>
<!DOCTYPE html>
<html lang="ko">
<head>
  <title>login</title>
  <link rel="stylesheet" href="/resources/style.css">
</head>
<body>
<div class="login-container">
  <form:form method="post" action="/user/login" modelAttribute="loginRequest" >
    <p><form:input path="userId" type="text" placeholder="ํšŒ์›์•„์ด๋””"  />
      <form:errors path="userId" cssClass="error-message" />
    </p>
    <p><form:input path="userPassword" type="password" placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ" />
      <form:errors path="userPassword" cssClass="error-message" />
    </p>
    <c:if test="${not empty message}">
      <p class="error-message" >${message}</p>
    </c:if>
    <p><button type="submit">๋กœ๊ทธ์ธ</button> </p>
  </form:form>
</div>
</body>
</html>

 


LoginRequest.java

import javax.validation.constraints.NotEmpty;

public class LoginRequest {

    @NotEmpty(message = "userId is empty")
    private String userId;
    @NotEmpty(message = "userPassword is empty!")
    private String userPassword;

    public String getUserId() {
        return userId;
    }

    public String getUserPassword() {
        return userPassword;
    }
}

 

 


์ปจํŠธ๋กค๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ ๋ฉ”์„œ๋“œ์—์„œ,

๋กœ๊ทธ์ธ Post์š”์ฒญ ์‹คํŒจ์‹œ, ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ฐ๊ฐ์˜ ํ•„๋“œ์— ๋Œ€ํ•œ ์—๋Ÿฌ๋ฉ”์‹œ์ง€๊ฐ€ ๋œจ๋„๋ก ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ๋‹ค.

 

์ปจํŠธ๋กค๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ ๋ฉ”์„œ๋“œ

@PostMapping("/login")
    public String login(@Valid @ModelAttribute LoginRequest loginRequest, BindingResult bindingResult,
                        HttpServletRequest request, RedirectAttributes redirectAttributes,
                        ModelMap modelMap) {

        // ... ๋กœ๊ทธ์ธ ์„ฑ๊ณต์‹œ ๋กœ์ง ์ƒ๋žต


        // ์ด ๋ถ€๋ถ„ !!!!!


        redirectAttributes.addFlashAttribute("message", "๋กœ๊ทธ์ธ ์‹คํŒจ");

        return "redirect:/user/login";
    }

 

์ฃผ์„ ํ‘œ์‹œํ•œ ๊ฐ€์šด๋ฐ ๋ถ€๋ถ„์—์„œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ

<form:errors>ํƒœ๊ทธ๊ฐ€ loginRequest.uerId ๋˜๋Š” loginRequest.userPassword์˜ Validation ์—ฌ๋ถ€๋ฅผ ์ฝ์–ด์„œ

์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ด์ฃผ๋Š”์ง€ ๋ชฐ๋ž์–ด์„œ ๊ฝค ์˜ค๋ž˜ ์‚ฝ์งˆํ–ˆ๋‹ค.

 


 

์‹œ๋„ ํ•ด๋ณธ ๋ฐฉ๋ฒ•๋“ค:

 

1๏ธโƒฃ redirectAttributes.addAttribute() ํ›„ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

 

 - redirectAttributes.addAttribute("loginRequest", loginRequest)

 - redirectAttributes.addAttribute("loginRequest", bindingResult)

 

 

 

 - ์—๋Ÿฌ ๋ฐœ์ƒ ์ด์œ : redirectAttributes์— ์ถ”๊ฐ€๋˜๋Š” ๊ฐ’๋“ค์€ ์š”์ฒญurl์˜ QueryParam์œผ๋กœ ์ถ”๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์—

    String์œผ๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•œ simple type ๊ฐ์ฒด๋“ค๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

 

 

2๏ธโƒฃ redirectAttributes.addFlashAttribute() ํ›„ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

 

 - ์• ์ดˆ์— flashAttribute๋Š” `${ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋ฆ„}` ์œผ๋กœ ์„ธ์…˜์—์„œ ๊บผ๋‚ด์˜ค๋Š” ๊ฑฐ๋ผ์„œ, ๋„ฃ์–ด์ค˜๋ดค์ž <form:errors>์—์„œ ๋ชป์ฝ์Œ

 

3๏ธโƒฃ model.addAttribute() ํ›„ ๋ทฐ ๋ฆฌํ„ด

 

 - ๊ทธ๋ž˜๋„ ๋ชป ์ฝ์–ด์˜ด

 

๐ŸŒŸ ํ•ด๊ฒฐ๋ฒ• : ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์•ˆ ํ•˜๊ณ  ๋ทฐ ๋ฆฌํ„ดํ•˜๊ธฐ

 

 - ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ๋ทฐ๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด, bindingResult๊ฐ€ model์— ์ž๋™์œผ๋กœ ๊ฝ‚ํ˜€์„œ jsp์—์„œ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์„œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์˜€๋‹ค...

 

@PostMapping("/login")
    public String login(@Valid @ModelAttribute LoginRequest loginRequest, BindingResult bindingResult,
                        HttpServletRequest request, RedirectAttributes redirectAttributes,
                        ModelMap modelMap) {

        // ... ๋กœ๊ทธ์ธ ์„ฑ๊ณต์‹œ ๋กœ์ง ์ƒ๋žต


        if(bindingResult.hasErrors()){
            return "login/loginForm";
        }


        // id, pwd ๋ถˆ์ผ์น˜ํ•  ๊ฒฝ์šฐ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
        redirectAttributes.addFlashAttribute("message", "๋กœ๊ทธ์ธ ์‹คํŒจ");

        return "redirect:/user/login";
    }

 

 

 

๋งŒ์•ฝ ๊ทธ๋ž˜๋„ ์•ˆ ๋˜๋ฉด,

https://stackoverflow.com/questions/2860756/spring-3-mvc-formerrors-not-showing-the-errors < - ์ด ๊ธ€ ์ฐธ๊ณ ํ•˜๋ฉด ๋ ๋“ฏ

 

 

728x90