玩法 2:如何在反向路由时获得参数未编码的 URL?

Play 2: How can I get an URL with parameters that aren't encoded when reverse routing?

这是我的路线:

GET /login controllers.Auth.login(from: String ?= null)

所以,当我这样做时:

public Result onUnauthorized(Http.Context context) {
    return redirect(controllers.routes.Auth.login(context.request().uri()));
}

我得到:

mydomain.com/login?from=%2Fmy%2Fpage

但我希望 URL 看起来像这样:

mydomain.com/login?from=/my/page

我可以获得这个漂亮的url,任何人都可以阅读,这样做:

public Result onUnauthorized(Http.Context context) {
    return redirect(controllers.routes.Auth.login().url() + "?from=" + context.request().uri());
}

路线:

GET /login controllers.Auth.login()

但这是错误的。

有人能告诉我这是否可行吗?任何帮助表示赞赏。

谢谢

我不会这样做 - 斜杠甚至在参数中都有它的用法,因此应该对其进行编码。

另外,出于安全原因,这不是最佳选择。

另一方面,在 Play 中你有其他可能传递 return URL,我最喜欢的是 Flash/Session scopes and/or in mem Cache API.如果您对细节感兴趣,请告诉我,我会编辑答案。