2010. 9. 11. 20:55ㆍplming/Java - Spring
Controller 내에서 발생하는 에러를 정교하게 처리하기 위해 ExceptionResolver를 이용할 수 있다.
action-servlet.xml - ExceptionResolver를 설정하는 부분 <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="net.javajigi.user.ExistedUserException">defaultErrorMessage</prop> <prop key="net.javajigi.user.UserNotFoundException">defaultErrorMessage</prop> </props> </property> <property name="exceptionAttribute" value="sampleException" /> <property name="defaultErrorView" value="error" /> </bean> |
Controller 내에서 net.javajigi.user.ExistedUserException 이 발생할 경우 "sampleException" 이름으로 "WEB-INF/jsp/defaultErrorMessage.jsp" 파일에 에러 메시지를 출력하게 된다. "exceptionAttribute" 속성을 사용하지 않았을 때의 디폴트 값은 "exception" 이다. "defaultErrorView" 속성은 앞의 "exceptionMappings" 에 정의된 Exception 외의 다른 에러가 발생할 경우 "/WEB-INF/jsp/error.jsp" 에 에러 메시지를 출력(에러 안내문장이 정해진)하도록 설정한 것이다.
defaultErrorMessage.jsp <p><span class="fieldError"><c:out value="${sampleException.message}"/></span></p> |
입력화면의 입력 값들을 유지한 상태로 에러 메시지를 출력하기 위해서는 Controller에서 Exception을 직접 처리해야 한다.
import org.springframework.validation.BindException; public class UserFormController extends SimpleFormController { public ModelAndView onSubmit(HttpServletRequest request, try { return mav; |
- 에러 메시지를 출력하는 JSP <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %> <%@ taglib uri="http://www.springmodules.org/tags/commons-validator" prefix="v"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> <c:if test="${not empty existedUserException }"> <br/> <p><b><fmt:message key="error.message"/></b> : <span class="fieldError"><c:out value="${existedUserException.message}"/></span> </p> </c:if> |
[출처] Spring 프레임워크 워크북
'plming > Java - Spring' 카테고리의 다른 글
Excel Upload (1) | 2010.12.20 |
---|---|
ORM (Object Relation Mapping) (0) | 2010.09.12 |
Spring MVC - 다국어 지원 (0) | 2010.09.05 |
Spring MVC - 파일 업로드 (0) | 2010.09.03 |
Spring MVC - 기타 Controller (0) | 2010.09.02 |