Java Playframework非法开始声明

时间:2015-11-28 17:38:15

标签: java playframework

我正在按照本教程进行表单验证和身份验证: 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

error image

请帮助代码!!

1 个答案:

答案 0 :(得分:0)

我认为你错过了视图中的结束括号。你需要

@(form: Form[Application.Login])

而不是

@(form: Form[Application.Login]