【发布时间】:2015-03-12 11:28:38
【问题描述】:
我有一个文件 static.scala :
val staticRoute = {
path("") {
getFromResource("web/index.html")
} ~ pathPrefix("web") {
getFromResourceDirectory("web")
}
}
另一个文件 a.scala:
val actionRoute = (handleRejections(rejectionHandler) & handleExceptions(exceptionHandler))
{
path("action" / "create") {
(put | post) {
implicit ctx => {
val xmlString = ctx.request.entity.asString
val actionObject = XML.loadString(xmlString).toAction
ActionService.write(actionObject)
sendResponse(StatusCodes.OK, APIResponseOK(Map("id" -> actionObject.id)))
}
}
}
}
我的 Base.scala 包含了rejectionHandler 的定义:
val rejectionHandler = RejectionHandler {
case Nil => ctx => {
complete((StatusCodes.NotFound, "The Requested Resource was not found"))
}
case mcr : MissingCookieRejection =>ctx=> { //testing
complete(StatusCodes.BadRequest, "Missing cookie")
}
}
这两个文件都扩展了 Base.scala,其中定义了拒绝处理程序。但是,在为服务器( localhost:8080 )打开正确的端口时,它对应于
path("")
在 static.scala 中,rejectionHandler 仍然会处理 Nil 并打印消息“未找到请求的资源”,这不应该是这种情况!如果未定义该路径,它不应该进入处理程序吗?如果我注释掉拒绝处理程序,一切都会按预期工作。请帮帮我!
【问题讨论】: