我有服务器,我应该按下按钮请求我也必须调用这个方法,当它工作时我应该解析json但我没有看到控制器方法只有主要方法可用
如何致电
<input type="submit" onclick="@routes.Login.resp()" value="LOGIN" >
因为它没有解决问题无法解决符号
GET /login controllers.Login.main()
我的控制器:
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请求并解析它
答案 0 :(得分:1)
据我所知,使用onclick属性,你总是在JavaScript中调用一个函数。如果您要指定网址,则需要将其放入带有<form action="@routes.Login.main()">
等操作属性的表单标记中。
HTML表单标记的默认设置是发送GET。如果您要发送POST,则必须通过其他method="post"
<form action="@routes.Login.main()" method="post">
来指定。但是,您还必须更改路由:POST /login controllers.Login.main()
。如果您想发布登录数据,我强烈建议您使用POST,因为通过GET,您的数据(包括密码)会显示在您网址的查询字符串中。
此外,您的@routes.Login.main()
方法只返回登录视图return ok(views.html.login.render());
。相反,它应该评估您发送的表单数据。