6

I want to call another internal url from my scalatra 'controller'. I can't do a simple redirect, as there's some security settings that mean a user has access only to the first url.

Is there a way to do this?

4

2 に答える 2

3
get("/foo") {
  servletContext.getRequestDispatcher("/bar").forward(request, response)
} 
于 2011-09-30T01:17:04.733 に答える
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() 関数と一緒に使用することもできるためです。

于 2014-04-16T22:24:01.970 に答える