我在routes.conf文件中有这个:
# SecureSocial routes
# Login page
GET /login securesocial.controllers.LoginPage.login
然后我在Scala Controller文件中有这个
val index = SecuredAction { implicit request =>
Redirect(routes.UserOps.watchlist)
// how do I go straight to /login? >|
}
执行此操作会将我带到一个登录页面,该页面上有一个红色错误栏,上面写着“您必须登录才能查看此页面”。如果我访问`localhost:9000 / login',我会得到没有错误栏的登录页面。
通常我做Redirect(routes.SomeControllerObject.ActionMethodName)
但在这种情况下我需要访问的控制器是插件...
我觉得我在这里错过了一些相当大的东西......
答案 0 :(得分:3)
<强>更新强>
要反向路由到插件控制器中的操作,您需要提供插件的routes
类的正确完整路径。
Redirect(securesocial.controllers.routes.LoginPage.login)
原始答案
对于反向路由,我认为Controller
的位置并不重要,因为Play正在构建项目编译时。来自文档:
对于路径文件中使用的每个控制器,路由器将在
routes
包中生成一个“反向控制器”,具有相同的操作方法,具有相同的签名,但返回play.api.mvc.Call
而不是play.api.mvc.Action
一个LoginPage
。
所以这应该就像 Redirect(routes.LoginPage.login);
直接在您的应用中作为控制器一样。
{{1}}击>
<击> 撞击>
答案 1 :(得分:1)
要显示消息,您必须在Flash中有一个项目。当您直接点击/登录时,没有闪光灯,因此您将看不到该消息。
如果您想看到该消息:
Redirect(securesocial.controllers.LoginPage.login).flashing( ... )