Java 玩框架表单重定向不工作
我在从一个剧本中重定向时遇到问题!形式。我认为问题在于我如何处理路线。其想法是,用户应该能够通过使用带有安全密钥的登录名首先进入index.hmtl,或者直接在包含访问令牌的有效路径中键入(使用qr码重定向)来访问dashboard.html 我想做的事情如下: 1) 使用index.html上的表单登录(路径:Application.index) 这是我的表单(位于index.html中): 这是我的路线文件:Java 玩框架表单重定向不工作,java,playframework,routes,Java,Playframework,Routes,我在从一个剧本中重定向时遇到问题!形式。我认为问题在于我如何处理路线。其想法是,用户应该能够通过使用带有安全密钥的登录名首先进入index.hmtl,或者直接在包含访问令牌的有效路径中键入(使用qr码重定向)来访问dashboard.html 我想做的事情如下: 1) 使用index.html上的表单登录(路径:Application.index) 这是我的表单(位于index.html中): 这是我的路线文件: # Home page GET /
# Home page
GET / Application.index
POST /dashboard Dashboard.authenticate
GET /dashboard Dashboard.dashboard
如果我通过URL直接调用dashboard(String access_token),dashboard路由工作正常,如:
但是,如果我尝试使用调用authenticate(String key)的登录表单登录,我会得到这个URL,其中key是发送给auth()函数的var。显然,我的错误在于路线,但我已经尝试并测试了逻辑,我100%确信它是正确的。
我正在使用Play 1.2.4
我已经花了两天时间讨论这个问题,如果有任何建议,我将不胜感激 这实际上看起来像个bug。也许试试
redirect("/dashboard?access_token="+access_token);
而不是
dashboard(access_token);
Java代码看起来不错。以防万一,您是否尝试将routes文件更改为:
# Home page
GET / Application.index
GET /dashboard Dashboard.dashboard
POST /dashboard Dashboard.authenticate
将GET移到POST之前(顺序很重要,如果该部分存在播放错误,则应予以修复)
另一种选择是简单地重命名POST路由,以修复由于两个路由具有相同“路径”而导致的问题
# Home page
GET / Application.index
GET /dashboard Dashboard.dashboard
POST /dashboard/auth Dashboard.authenticate
问题解决了
我忘了提到的是…哎呀,我也在使用jQuery Mobile,问题与Play有关!正在覆盖我的jQuery移动页面路由的路由
我通过添加以下脚本禁用了路由:
$(document).bind("mobileinit", function(){
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
$.mobile.changePage.defaults.changeHash = false;
})
使用jQuery网站上的说明:我实现了上述内容,但需要按照以下顺序在.hmtml标题中引用脚本:
<script src="jquery.js"></script>
<script src="custom-scripting.js"></script>
<script src="jquery-mobile.js"></script>
我想你是对的,这可能是一出戏!缺陷我尝试了你的建议,但它不起作用,因为它也返回uri:而不是但访问令牌和密钥是分开的。然而,我通过使用javascript进行from身份验证解决了这个问题,在身份验证之后,我通过javascript中的changepage调用dashboard?access_token=。这不是我喜欢的方式,但现在它解决了这个问题。这很奇怪。也许可以试着打印出access_令牌,以确保它确实是您所认为的?感谢您的帮助Pere和Wes:)在提出上述解决方案之前,我尝试了您的建议,但没有结果。结果是,由于忽略了我使用jQuery Mobile时的关键信息,您并不了解全部情况,但问题出在我身上。再次感谢。
$(document).bind("mobileinit", function(){
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
$.mobile.changePage.defaults.changeHash = false;
})
<script src="jquery.js"></script>
<script src="custom-scripting.js"></script>
<script src="jquery-mobile.js"></script>