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