/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 < - ์ด ๊ธ ์ฐธ๊ณ ํ๋ฉด ๋ ๋ฏ
'์ค๋ฅ ํด๊ฒฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(maven) java: package org.junit.jupiter.api does not exist ํด๊ฒฐ (0) | 2024.07.18 |
---|---|
resources/data.sql ์๋์ผ๋ก ์คํ๋์ง ์๋ ๋ฌธ์ (0) | 2024.03.08 |
์ธํ ๋ฆฌ์ ์ด read only ํด์ ํ๊ธฐ (0) | 2023.03.11 |
๋ฐฑ์คํ๋ธ ๋นจ๊ฐ ์ฒดํฌ (์ ๋ก๋ ์ค๋ฅ) (1) | 2023.03.08 |
[ํ์ด์ฌ] sys.stdin.readline '\n'๊น์ง ์ ๋ ฅ (0) | 2023.03.02 |