Java 如何在play framework中将后端值设置为表单文本字段

Java 如何在play framework中将后端值设置为表单文本字段,java,html,postgresql,playframework-2.0,Java,Html,Postgresql,Playframework 2.0,我创建了一个登录页面。如果用户已经注册,登录将生效,并重定向到配置文件页面。在提交配置文件中的值后,数据将存储在数据库中。同样的用户将登录,它将显示空白配置文件页来填充。但它将显示用户填写的详细信息。为此,我只需获取登录的唯一配置文件id,并获取该用户的详细信息。但是我不知道如何使用html中的value属性将细节设置到前端表单文本字段中 这是我的控制器: package controllers; import java.util.HashMap; import java.util.Li

我创建了一个登录页面。如果用户已经注册,登录将生效,并重定向到配置文件页面。在提交配置文件中的值后,数据将存储在数据库中。同样的用户将登录,它将显示空白配置文件页来填充。但它将显示用户填写的详细信息。为此,我只需获取登录的唯一配置文件id,并获取该用户的详细信息。但是我不知道如何使用html中的value属性将细节设置到前端表单文本字段中

这是我的控制器:

   package controllers;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import models.ForgotPassword;
import models.Profile;
import models.Register;

import org.apache.commons.mail.EmailException;

import play.Logger;
import play.data.Form;
import play.libs.F.Promise;
import play.libs.OpenID;
import play.libs.OpenID.UserInfo;
import play.mvc.Controller;
import play.mvc.Result;
import views.html.*;
import views.html.index;
import views.html.login;
import views.html.profile;

import com.typesafe.plugin.MailerAPI;
import com.typesafe.plugin.MailerPlugin;


public class Application extends Controller {

    public static Result index() {
        return ok(index.render("Your new application is ready."));
    }

    public static Result signup() {
        return ok(login.render("fghj"));

    }

    public static Result register() {

        Register register = Form.form(Register.class).bindFromRequest().get();
        register.save();
        return ok(login.render("ghjk"));
    }

    public static Result login() {
        Register register = Form.form(Register.class).bindFromRequest().get();
        String uname = register.getUsername();
        String pass = register.getPassword();
        List<Register> login = Register.find.where().eq("username", uname)
                .eq("password", pass).findList();
        if (login.isEmpty()) {
            return unauthorized("Please register and try login");
        } else {
            session().clear();
            session("registerId", +login.get(0).getRegisterId() + "");
            return ok(app.render("wsdfghjk"));
             }
    }

    public static Result home() {
        return ok(app.render("fghjk"));
    }

    public static Result menu() {
        String reg=session().get("registerId");
        Profile profile1=Profile.find.byId(reg);
        String last=profile1.getLastname();
        return ok(profile.render("" ,profile1));
        //return ok(profile.render(""));


    }

    public static Result logout() {
        return ok(index.render("fhjk"));
    }

    public static Result profile() {
        Profile profile = Form.form(Profile.class).bindFromRequest().get();
        profile.getRegister().setRegisterId(
                Integer.parseInt(session().get("registerId")));

        profile.save();
        return ok();
    }

    public static Result forgotPassword() {

        return ok(forgotPassword.render("eghj"));
    }

    public static Result email() throws EmailException {
        ForgotPassword forgotPass = Form.form(ForgotPassword.class)
                .bindFromRequest().get();
        String emailId = forgotPass.getEmail();
        System.out.println(emailId);
        MailerAPI  mail = play.Play.application().plugin(MailerPlugin.class).email();
           mail.setSubject("mailer");
           mail.setRecipient(emailId);
           mail.setFrom("sindhu.raja90@gmail.com");
           mail.send( "text" );  
           return ok("gg");


    }

    @SuppressWarnings("serial")
    public static final Map<String, String> identifiers = new HashMap<String, String>() {
        {
            put("google", "https://www.google.com/accounts/o8/id");
        }
    };

    @SuppressWarnings("deprecation")
    public static Result auth() {
        Logger.debug("authenticate");
        String providerId = "google";
        String providerUrl = identifiers.get(providerId);
        String returnToUrl = "http://localhost:9000/login/verify";
        if (providerUrl == null) {
            return badRequest("Could not find provider " + providerId);
        }

        Map<String, String> attributes = new HashMap<String, String>();
        attributes.put("Email", "http://schema.openid.net/contact/email");
        attributes
                .put("FirstName", "http://schema.openid.net/namePerson/first");
        attributes.put("LastName", "http://schema.openid.net/namePerson/last");

        Promise<String> redirectUrl = OpenID.redirectURL(providerUrl,
                returnToUrl, attributes);
        return redirect(redirectUrl.get());
    }

    public static Result verify() {
        Logger.debug("verifyLogin");
        System.out.println("verify execuited");
        Promise<UserInfo> userInfoPromise = OpenID.verifiedId();
        userInfoPromise.get();
        return ok(profile.render("ert"));
    }

}
public static Result menu() {
        //rest omitted
        Profile profile1=Profile.find.byId(reg);
        //rest omitted
        return ok(profile.render("", profile1));
    }

如果不想使用form helper模板,只需将profile1对象显式传递给模板:

@(message: String, profile: Profile)

@main("") {
    <div class="form-group">
        <label class="col-lg-3 control-label" for="lastName">Last
            Name:</label>
        <div class="col-lg-4">

            <input type="text" class="form-control" name="lastname" value='@profile.getLastname'
            id="lastName" autocomplete="off" required
            data-bv-notempty-message="The last name is required" />
        </div>
    </div>
}

我在render方法return okprofile.render,profile1中出错;你的档案课在哪里?您需要在模板中指定路径。例如:@message:String,profile:my.model.package.profile此外,在profile1.getLastnameProfile类位于模型包中之前,您错过了@。很抱歉,我在发送时错过了@符号。但在我的代码中,我给出了它。我在控制器类应用程序中遇到错误。javaI希望看到此错误。我已经在本地创建了一个示例应用程序,它运行良好。你能给我提供一个堆栈跟踪吗?
           [error] /home/e100085/Software/play-2.2.3/myApps/app/controllers/Application.java:142: error: method render in class profile cannot be applied to given types;
[error]                 return ok(profile.render("ert"));
[error]                                  ^
[error]   required: String,Profile
[error]   found: String
[error]   reason: actual and formal argument lists differ in length
[error] Note: /home/e100085/Software/play-2.2.3/myApps/app/controllers/Application.java uses or overrides a deprecated API.
[error] Note: Recompile with -Xlint:deprecation for details.
[error] 1 error
[error] (compile:compile) javac returned nonzero exit code
[error] application - 

! @6j0a93m46 - Internal server error, for (GET) [/] ->

play.PlayExceptions$CompilationException: Compilation error[error: method render in class profile cannot be applied to given types;]
        at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14$$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
        at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14$$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
        at scala.Option.map(Option.scala:145) ~[scala-library-2.10.4.jar:na]
        at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14.apply(PlayReloader.scala:304) ~[na:na]
        at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14.apply(PlayReloader.scala:298) ~[na:na]
        at scala.Option.map(Option.scala:145) ~[scala-library-2.10.4.jar:na]
[warn] play - No application found at invoker init
@(message: String, profile: Profile)

@main("") {
    <div class="form-group">
        <label class="col-lg-3 control-label" for="lastName">Last
            Name:</label>
        <div class="col-lg-4">

            <input type="text" class="form-control" name="lastname" value='@profile.getLastname'
            id="lastName" autocomplete="off" required
            data-bv-notempty-message="The last name is required" />
        </div>
    </div>
}
public static Result menu() {
        //rest omitted
        Profile profile1=Profile.find.byId(reg);
        //rest omitted
        return ok(profile.render("", profile1));
    }