Computer/SPRING
[SPRING] javax.servlet.jsp.JspTagException
인생이글케쉬우냐
2009. 9. 9. 11:38
========================================================================================
심각: Servlet.service() for servlet action threw exception
javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean name 'email' available as request attribute
at org.springframework.web.servlet.tags.BindTag.doStartTagInternal(BindTag.java:121)
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:77)
at org.apache.jsp.jsp.mail.EmailSend_jsp._jspService(EmailSend_jsp.java:401)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:236)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:902)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
========================================================================================
스프링의 소스인 BindTag.java안에 있는 해당 메소드를 검색해보니 익셉션이 아래와 같은 경우에 생성이 되었다.
protected final int doStartTagInternal() throws Exception {
....
try {
this.status = new BindStatus(getRequestContext(), resolvedPath, isHtmlEscape());
}
catch (IllegalStateException ex) {
throw new JspTagException(ex.getMessage());
}
this.status = new BindStatus(getRequestContext(), resolvedPath, isHtmlEscape());
}
catch (IllegalStateException ex) {
throw new JspTagException(ex.getMessage());
}
.....
}
그 전까지는 저런 익셉션 없었는데,
업데이트문을 하나 추가하고 난 뒤에 벌어진 일이라, 업데이트 문의 문제라고 생각했었다.
그래서 쿼리에 문제가 있었다고 생각했는데 디버깅한다고 다 찍어보니 그건 아니었다.
문제는 해쉬맵에 있었다.
나름 별도로 띄워두겠다고 컨트롤러내에서 내가 따로 정의한 Map을 리턴하게 해둔 메소드에서
null을 리턴하고(당당히 return null;이라 적었음),
view에선 해당 맵을 찾고 있으니 생각해보면 당연한 오류였다.
이런 멍청한 행동은 하지 말아야지;;;
그 전까지는 저런 익셉션 없었는데,
업데이트문을 하나 추가하고 난 뒤에 벌어진 일이라, 업데이트 문의 문제라고 생각했었다.
그래서 쿼리에 문제가 있었다고 생각했는데 디버깅한다고 다 찍어보니 그건 아니었다.
문제는 해쉬맵에 있었다.
나름 별도로 띄워두겠다고 컨트롤러내에서 내가 따로 정의한 Map을 리턴하게 해둔 메소드에서
null을 리턴하고(당당히 return null;이라 적었음),
view에선 해당 맵을 찾고 있으니 생각해보면 당연한 오류였다.
이런 멍청한 행동은 하지 말아야지;;;
반응형