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?
get("/foo") {
servletContext.getRequestDispatcher("/bar").forward(request, response)
}
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() 関数と一緒に使用することもできるためです。