Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 玩框架表单重定向不工作_Java_Playframework_Routes - Fatal编程技术网

Java 玩框架表单重定向不工作

Java 玩框架表单重定向不工作,java,playframework,routes,Java,Playframework,Routes,我在从一个剧本中重定向时遇到问题!形式。我认为问题在于我如何处理路线。其想法是,用户应该能够通过使用带有安全密钥的登录名首先进入index.hmtl,或者直接在包含访问令牌的有效路径中键入(使用qr码重定向)来访问dashboard.html 我想做的事情如下: 1) 使用index.html上的表单登录(路径:Application.index) 这是我的表单(位于index.html中): 这是我的路线文件: # Home page GET /

我在从一个剧本中重定向时遇到问题!形式。我认为问题在于我如何处理路线。其想法是,用户应该能够通过使用带有安全密钥的登录名首先进入index.hmtl,或者直接在包含访问令牌的有效路径中键入(使用qr码重定向)来访问dashboard.html

我想做的事情如下:

1) 使用index.html上的表单登录(路径:Application.index) 这是我的表单(位于index.html中):

这是我的路线文件:

# 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>