我正在按照本教程进行表单验证和身份验证:
https://www.playframework.com/documentation/2.1.1/JavaGuide4
我创建了一个contr_login
页面作为我的模板。
这是我的contr_login.scala.html
页面:
@()
<!DOCTYPE html>
@(form: Form[Application.Login]
@helper.form(routes.Application.authenticate) {
<h1>sign in</h1>
@if(form.hasGlobalErrors) {
<p class="error">
@form.globalError.message
</p>
}
<p>
<input type="email" name="email" placeholder="Email" value="@form("email").value">
</p>
<p>
<input type="password" name="password" placeholder="Password">
</p>
<p>
<button type="submit">Login</button>
</p>
})
<html lang="en">
<head>
<title>Contributor Login</title>
<link rel="stylesheet" media="screen" href="@routes.Assets.versioned("stylesheets/main.css")">
<link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png")">
</head>
<body>
@navbar()
<div id="content">
<p>TODO: add contributor login page content</p>
</div>
</body>
</html>
这是我的Application.java
代码
package controllers;
import play.*;
import play.mvc.*;
import play.db.*;
import views.html.*;
import javax.sql.*;
import java.sql.*;
import java.util.ArrayList;
public class Application extends Controller {
public Result index() {
Statement st;
ResultSet rs;
String helped = "Error";
String need = "Error";
try {
Connection connection = DB.getConnection();
st = connection.createStatement();
rs = st.executeQuery("SELECT COUNT(*) FROM giftrequest WHERE filled=1");
rs.next();
helped = rs.getString(1);
rs = st.executeQuery("SELECT COUNT(*) FROM giftrequest WHERE filled=0");
rs.next();
need = rs.getString(1);
connection.close();
} catch (Exception e){
e.printStackTrace();
}
return ok(index.render(helped, need));
}
public Result metrics() {
Statement st;
ResultSet rs;
String helped = "Error";
String raised = "Error";
String need = "Error";
try {
Connection connection = DB.getConnection();
st = connection.createStatement();
rs = st.executeQuery("SELECT COUNT(*) FROM giftrequest WHERE filled=1");
rs.next();
helped = rs.getString(1);
rs = st.executeQuery("SELECT SUM(g.price) FROM contribution c, gift g WHERE c.gift = g.id");
rs.next();
raised = "$" + rs.getString(1);
rs = st.executeQuery("SELECT COUNT(*) FROM giftrequest WHERE filled=0");
rs.next();
need = rs.getString(1);
connection.close();
} catch (Exception e){
e.printStackTrace();
}
return ok(views.html.metrics.render(helped, raised, need));
}
public Result customer_service() {
return ok(views.html.customer_service.render());
}
public Result org_login() {
return ok(views.html.org_login.render());
}
public Result org_signup() {
return ok(views.html.org_signup.render());
}
public Result children() {
return ok(views.html.children.render());
}
public Result org_child_select() {
Statement st;
ResultSet rs;
String childCount = "0";
String[] childList = {"Good Kid", "Bad Kid", "Ugly Kid", "One Kid", "Two Kid", "Red Kid", "Blue Kid"};
int[] idList = {0, 1, 2, 3, 4, 5, 6, 7};
String orgName = "Default";
try {
Connection connection = DB.getConnection();
// Get Child Count
st = connection.createStatement();
rs = st.executeQuery("SELECT COUNT(*) FROM child");
rs.next();
childCount = rs.getString(1);
/*
// Get Organization Name
rs = st.executeQuery("SELECT oname FROM organization WHERE username = ???");
rs.next();
orgName = rs.getString(1);
*/
// Get Children
rs = st.executeQuery("SELECT firstname, lastname FROM child");
String s = "";
while(rs.next())
s += rs.getString(1) + " " + rs.getString(2) + ";";
childList = s.split(";");
// Get Child IDs
s = "";
rs = st.executeQuery("SELECT id FROM child");
while(rs.next())
s += rs.getString(1) + ";";
idList = new int[s.split(";").length];
for(int i = 0; i < idList.length; i++)
idList[i] = Integer.parseInt(s.split(";")[i]);
connection.close();
} catch (Exception e) {
} // catch
return ok(views.html.org_child_select.render(childCount, childList, orgName, idList));
} // org_child_select
public Result org_gift_select() {
String childName = "Default";
int childAge = 0;
String[] giftList = getGifts();
return ok(views.html.org_gift_select.render(childName, childAge, giftList));
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
public Result contr_login() {
return ok(views.html.contr_login.render(form(Login.class)));
}
public Result contr_signup() {
return ok(views.html.contr_signup.render());
}
public static class Login
{
public String email;
public String password;
}
public Result authenticate() {
Form<Login> loginForm = form(Login.class).bindFromRequest();
if (loginForm.hasErrors()) {
return badRequest(contr_login.render(loginForm));
} else {
session().clear();
session("email", loginForm.get().email);
return redirect(
routes.Application.index()
);
}
}
public String validate()
{
if (User.authenticate(email, password) == null)
{
return "Invalid user or password";
}
return null;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
public Result contributions() {
return ok(views.html.contributions.render());
}
public Result contr_child_select() {
return ok(views.html.contr_child_select.render());
}
public Result contr_gift_select() {
return ok(views.html.contr_gift_select.render());
}
/**
* Returns all gifts in the database
*
* @return An array of strings containing all gifts in the database
*/
private String[] getGifts() {
Statement st;
ResultSet rs;
String[] giftList = {"Rock", "Daisy Red Ryder BB Gun", "Hippopotamus", "Sable", "'54 Convertible", "Yacht", "Platinum Mine Deed"};
try {
Connection connection = DB.getConnection();
//Get Gifts
st = connection.createStatement();
rs = st.executeQuery("SELECT gname FROM gift");
String s = "";
while(rs.next())
s += rs.getString(1) + ";";
giftList = s.split(";");
connection.close();
} catch(Exception e) {
} // catch
return giftList;
} // getGifts
/**
* Handles Form Submission for Adding a Child
*
* @param childName Name of Child
* @param childAge Age of Child
*
* @return Directs to Gift Select
*/
public Result orgAddChild(String childName, int childAge) {
String[] giftList = getGifts();
return ok(views.html.org_gift_select.render(childName, childAge, giftList));
} // orgAddChild
/**
* Handles Form Submission for Selecting a Child
*
* @param childId Id of Child
*
* @return Directs to Gift Select
*/
public Result orgConfirmChild(int childId) {
Statement st;
ResultSet rs;
String childName = "Default";
int childAge = 0;
String[] giftList = getGifts();
try {
Connection connection = DB.getConnection();
// Get Child Name
st = connection.createStatement();
rs = st.executeQuery("SELECT firstname, lastname FROM child WHERE id = " + childId);
rs.next();
childName = rs.getString(1) + " " + rs.getString(2);
// Get Child Age
rs = st.executeQuery("SELECT age FROM child WHERE id = " + childId);
rs.next();
childAge = rs.getInt(1);
connection.close();
} catch (Exception e) {
e.printStackTrace();
} // catch
return ok(views.html.org_gift_select.render(childName, childAge, giftList));
} // orgConfirmChild
}
但是当我运行这个播放框架代码时,它给了我这个错误:
illegal start of declaration
请帮助代码!!
答案 0 :(得分:0)
我认为你错过了视图中的结束括号。你需要
@(form: Form[Application.Login])
而不是
@(form: Form[Application.Login]