我正在开发一个play 2.2.3应用程序,我有一些问题要将表单绑定到我的模型类。 这是我的模特课:
package models;
import java.util.Date;
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Access(AccessType.FIELD)
public class User {
@Id
private int id;
private String firstname;
private String lastname;
private Date birthdate;
private String gender;
private String username;
private String password;
// some getter and setters...
}
我的表格:
@(form: Form[User])
@helper.form(action = routes.Application.register) {
<fieldset>
<legend>Persönliche Daten</legend>
@helper.inputText(form("firstname"),'_label -> "Vorname:")
@helper.inputText(form("lastname"),'_label -> "Nachname:")
@helper.inputDate(form("birthdate"),'_label -> "Geburtstag:")
@helper.inputRadioGroup(form("gender"),options = Seq(("male"->"Männlich"),("female"->"Weiblich")),'_label -> "Geschlecht:")
</fieldset>
<fieldset>
<legend>Login Daten</legend>
@helper.inputText(form("username"),'_label -> "Benutzername*:")
@helper.inputText(form("password"),'_label -> "Passwort*:")
<input id="registersubmit" type="submit" value="Registrieren" accesskey="s"/>
<p id="requiredhint">Mit "*" gekennzeichnete Felder sind Pflichtfelder</p>
</fieldset>
}
我的行动方法:
@Transactional
public static Result register() {
Form<User> form = Form.form(User.class).bindFromRequest();
if (form.hasErrors()) {
return badRequest("/registration");
} else {
User user = form.get();
//JPA.em().persist(user);
System.out.println("User "+user.getUsername()+" successfully saved!");
return redirect("/index");
}
}
字段在表单中,但之后没有绑定到User,并且为user.getUsername()打印null。 可能是什么问题?
答案 0 :(得分:1)
似乎很好。你可以将字段作为公共字段并删除getter和setter吗?只是为了检查它们是否存在问题,或者在示例中放置完整的User类。
答案 1 :(得分:0)
@David,你是在正确的方向。当我在开发阶段混合语言时,我有一些错误的名字,我认为这不会是关键,但确实如此。所以改变例如
public String getBenutzername() {
return username;
}
到
public String getUsername() {
return username;
}
修复了问题。