diff --git a/scalate/src/main/scala/org/scalatra/scalate/ScalateSupport.scala b/scalate/src/main/scala/org/scalatra/scalate/ScalateSupport.scala index c7637dfe7..30999c95d 100644 --- a/scalate/src/main/scala/org/scalatra/scalate/ScalateSupport.scala +++ b/scalate/src/main/scala/org/scalatra/scalate/ScalateSupport.scala @@ -128,6 +128,7 @@ trait ScalateSupport extends ScalatraKernel { // Hack: Have to pass it the request and response, because we're outside the // scope of the super handler. private def renderScalateErrorPage(req: HttpServletRequest, resp: HttpServletResponse, e: Throwable) = { + resp.setStatus(500) resp.setContentType("text/html") val errorPage = templateEngine.load("/WEB-INF/scalate/errors/500.scaml") val context = createRenderContext(req, resp, resp.getWriter) diff --git a/scalate/src/test/scala/org/scalatra/scalate/ScalateSupportSpec.scala b/scalate/src/test/scala/org/scalatra/scalate/ScalateSupportSpec.scala index af82895e0..e0d5a3b79 100644 --- a/scalate/src/test/scala/org/scalatra/scalate/ScalateSupportSpec.scala +++ b/scalate/src/test/scala/org/scalatra/scalate/ScalateSupportSpec.scala @@ -28,7 +28,8 @@ class ScalateSupportSpec extends ScalatraSpec { def is = "implicitly bind session" ! e19^ "implicitly bind params" ! e20^ "implicitly bind multiParams" ! e21^ - "render to a string instead of response" ! e22 + "render to a string instead of response" ! e22^ + "set status to 500 when rendering 500.scaml" ! e23 addServlet(new ScalatraServlet with ScalateSupport with ScalateUrlGeneratorSupport with FlashMapSupport with CookieSupport { @@ -218,4 +219,8 @@ class ScalateSupportSpec extends ScalatraSpec { def is = def e22 = get("/render-to-string") { header("X-Template-Output") must_== "
SSP template
" } + + def e23 = get("/barf") { + status must_== 500 + } }