java - 无法从 View 调用 Play Framework 静态方法

标签 java json playframework playframework-2.2

我有服务器,我应该在按下按钮时发出请求,我也必须调用这个方法,当它工作时我应该解析 json 但我看不到 Controller 方法,只有主方法可用

如何调用

 <input type="submit" onclick="@routes.Login.resp()" value="LOGIN" >

因为它不起作用无法解析符号

GET     /login                           controllers.Login.main()

我的 Controller :

package controllers;

import play.libs.F;
import play.libs.WS;
import play.mvc.Controller;
import play.mvc.Result;


public class Login extends Controller {



    public static Result main() {
        return ok(views.html.login.render());
    }

    public static F.Promise<Result> resp() {
        String feedUrl="http://validate.jsontest.com/?json=%7B%22key%22:%22value%22%7D";
        final F.Promise<Result> resultPromise = WS.url(feedUrl).get().flatMap(
                new F.Function<WS.Response, F.Promise<Result>>() {
                    public F.Promise<Result> apply(WS.Response response) {
                        return WS.url(response.asJson().findPath("empty").asText()).get().map(
                                new F.Function<WS.Response, Result>() {
                                    public Result apply(WS.Response response) {
                                        return ok("size" + response.asJson().findPath("count").asInt());
                                    }
                                }
                        );
                    }
                }
        );
        return resultPromise;
    }
}

查看:

<!--
Author: W3layouts
Author URL: http://w3layouts.com
License: Creative Commons Attribution 3.0 Unported
License URL: http://creativecommons.org/licenses/by/3.0/
-->
<!DOCTYPE html>
<html>
    <head>
        <title>LOGIN</title>
        <meta charset="utf-8">
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/stylelogin.css")">

        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script>
            <!--webfonts-->
        <link href='http://fonts.googleapis.com/css?family=Open+Sans:600italic,400,300,600,700' rel='stylesheet' type='text/css'>
            <!--//webfonts-->
    </head>
    <body>
            <!-----start-main---->
        <div class="main">
            <div class="login-form">
                <h1>Member Login</h1>
                <div class="head">
                    <img src="@routes.Assets.at("images/user.png")" alt=""/>

                </div>
                <form>
                    <input type="text" class="text" value="USERNAME" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'USERNAME';}" >
                    <input type="password" value="Password" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Password';}">
                    <div class="submit">
                        <input type="submit" onclick="@routes.Login.main()" value="LOGIN" >
                    </div>

                </form>
            </div>
                <!--//End-login-form-->
                <!-----start-copyright---->

                <!-----//end-copyright---->
        </div>
            <!-----//end-main---->

    </body>
</html>

我不确定我是否也正确解析 json,如何发出正确的 GET、POST 请求并解析它

最佳答案

据我所知,通过 onclick 属性,您总是在 JavaScript 中调用函数。如果您想指定一个 URL,您需要将其放入表单标签中,并使用类似 <form action="@routes.Login.main()"> 的操作属性。 .

HTML 表单标记的默认设置是发送 GET 。如果您想发送 POST,则必须通过附加的 method="post" 来指定它。喜欢 <form action="@routes.Login.main()" method="post"> 。但是你也必须改变你的路由:POST /login controllers.Login.main() 。如果您想发布登录数据,我强烈建议您使用 POST,因为通过 GET,您的数据(包括密码)会出现在 URL 的查询字符串中。

另外你的@routes.Login.main()方法只返回登录 View return ok(views.html.login.render()); 。相反,它应该评估您发送的表单数据。

关于java - 无法从 View 调用 Play Framework 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31479259/

相关文章:

playframework - POJO、JPA 绑定(bind)和复选框

java - 如何从 ValueStack 中删除操作?

java - 如何使用带有 JBOSS 工具的 Hibernate 在数据库中添加新记录?

javascript - 使用 jquery 解析 JSON 响应中的项目

json - 缺少 d3 连接 choropleth map 中数据的步骤

java - 玩框架Ebean JoinColumn错误

使用restapifacade在play框架中的Neo4j上进行Java对象映射

java - 如何在 Sublime Text 3 中使用 JUnit

java - 如果我更改服务器配置,什么会攻击 9990 端口? REST java WildFly

javascript - Backbone.js JSON 结构