Scalatra - 我们如何进行内部重定向/转发请求

时间:2011-07-22 06:03:57

标签: redirect forward scalatra

我想从我的scalatra'控制器'调用另一个内部网址。我无法进行简单的重定向,因为有一些安全设置意味着用户只能访问第一个网址。

有办法做到这一点吗?

2 个答案:

答案 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()函数。