[SPRING] 스프링 MVC : 오류가있는 페이지로 리디렉션하는 방법?
SPRING스프링 MVC : 오류가있는 페이지로 리디렉션하는 방법?
컨트롤러가 사용자 지정 오류 메시지가있는 페이지로 리디렉션되도록하려고합니다.
@RequestMapping(method=RequestMethod.POST)
public String processSubmit(@Valid Voter voter, BindingResult result, HttpServletRequest request) {
if (result.hasErrors()) {
logger.info("RegisterController encountered form errors ");
return "registerPage";
}
if (service.isVoterRegistered(voter.getVoterID())) {
logger.info("VoterID exists");
request.setAttribute("firstName", voter.getFirstName());
request.setAttribute("lastName", voter.getLastName());
request.setAttribute("ssn", voter.getSsn());
return "forward:/question";
}else {
logger.info("RegisterController is redirecting because it voter info failed to authenticate");
//TODO: should re-direct to register page with error
return "redirect:registerPage";
}
}
}
<!-- registerPage.jsp -->
<div class="container">
<h1>
Voter Registration
</h1>
<div class="span-12 last">
<form:form modelAttribute="voter" method="post">
<fieldset>
<legend>Voter Fields</legend>
<p>
<form:label for="firstName" path="firstName" cssErrorClass="error">First Name : </form:label></br>
<form:input path="firstName" /><form:errors path="firstName"/>
</p>
<p>
<form:label for="lastName" path="lastName" cssErrorClass="error">Last Name : </form:label> </br>
<form:input path="lastName" /> <form:errors path="lastName" />
</p>
<p>
<form:label for="ssn" path="ssn" cssErrorClass="error">Social Security Number : </form:label> </br>
<form:input path="ssn" /> <form:errors path="ssn" />
</p>
<p>
<input type="submit"/>
</p>
</fieldset>
</form:form>
</div>
<hr>
</div>
register.jsp 페이지로 리디렉션 할 때 유권자가 등록되지 않았다는 오류 메시지가 페이지에 표시되기를 원합니다. 내 질문은 양식에 유효성 검사 오류 (예 : result.hasErrors () == true)가있는 것처럼 페이지로 돌아가도록 Controller를 가져 오는 방법입니다.
미리 감사드립니다.
해결법
-
==============================
1.jsp에 다음 섹션을 추가 할 수 있습니다.
jsp에 다음 섹션을 추가 할 수 있습니다.
<c:choose> <c:when test="${not empty errors}"> <div class="error"> <c:forEach items="${errors}" var="err"> ${err.defaultMessage} <br/> </c:forEach> </div> </c:when> </c:choose>
여기 C는 아무것도 아닙니다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
또한 모델에 오류를 전달하고 컨트롤러 메소드의 if 블록 내부에서 이와 같이 볼 필요가 있습니다.
model.addAttribute("errors",result.getFieldErrors());
DIV의 오류 클래스는 빨간색 블록으로 표시 할 수있는 사용자 정의 CSS입니다.
.error{ color: red; border:2px solid red; padding:10px; }
이걸 좀 볼 수도 있습니다. 희망이 내 대답은 당신을 도왔습니다 ..
-
==============================
2.컨트롤러 메소드에 문제가 있습니다. 결과에서 getAllErrors () 메소드를 호출하는 것이 getFieldErrors ()보다 더 좋습니다. 물론 결과가 BindingResult 유형 인 경우. 이렇게 :
컨트롤러 메소드에 문제가 있습니다. 결과에서 getAllErrors () 메소드를 호출하는 것이 getFieldErrors ()보다 더 좋습니다. 물론 결과가 BindingResult 유형 인 경우. 이렇게 :
model.addAttribute ( "오류", result.getAllErrors ());
from https://stackoverflow.com/questions/15778913/spring-mvc-how-to-redirect-to-a-page-with-error by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring에서 application.properties를 상속받는 방법? (0) | 2019.05.02 |
---|---|
[SPRING] Tomcat 및 ContextLoaderListener가있는 PropertyPlaceholderConfigurer (0) | 2019.05.02 |
[SPRING] Spring MqttPahoMessageDrivenChannelAdapter 연결이 끊어졌습니다 : 연결이 끊어졌습니다; 다시 시도하는 (0) | 2019.05.02 |
[SPRING] 인터셉터 preHandle ()이 login.html로 리디렉션되지 않음 (0) | 2019.05.02 |
[SPRING] 스프링 프로파일 변수 설정하기 (0) | 2019.05.02 |