我想从我的scalatra'控制器'调用另一个内部网址。我无法进行简单的重定向,因为有一些安全设置意味着用户只能访问第一个网址。
有办法做到这一点吗?
答案 0 :(得分:3)
get("/foo") {
servletContext.getRequestDispatcher("/bar").forward(request, response)
}
答案 1 :(得分:1)
get()方法定义为(类似于POST等):
def get(transformers : org.scalatra.RouteTransformer*)(action : => scala.Any) : org.scalatra.Route
取决于您对内部重定向的意思,我假设您只想执行另一个路由的操作。您可以选择几种方法。这似乎对我有用:
val canonicalEndpoint = get("/first/route") {
//do things in here
}
然后你可以做:
get("/second/route")( canonicalEndpoint.action )
我认为你会得到你想要的回应。
我喜欢保存get()的整个Route响应,因为您可能也想在路由中使用scalatra的url()函数。