Play Framework:无法从表单绑定

时间:2014-05-11 02:14:49

标签: java forms scala view playframework

我正在开发一个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。 可能是什么问题?

2 个答案:

答案 0 :(得分:1)

似乎很好。你可以将字段作为公共字段并删除getter和setter吗?只是为了检查它们是否存在问题,或者在示例中放置完整的User类。

答案 1 :(得分:0)

@David,你是在正确的方向。当我在开发阶段混合语言时,我有一些错误的名字,我认为这不会是关键,但确实如此。所以改变例如

public String getBenutzername() {
    return username;
}

public String getUsername() {
    return username;
}

修复了问题。