【问题标题】:Play Framework: could not bind from form播放框架:无法从表单绑定
【发布时间】:2014-05-11 02:14:48
【问题描述】:

我正在开发一个 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.getUsername() 打印 null。 可能是什么问题?

【问题讨论】:

    标签: java forms scala view playframework


    【解决方案1】:

    好像没问题。您可以将字段设置为公共字段并删除 getter 和 setter 吗?只是为了检查它们是否有问题或将完整的 User 类放在示例中。

    【讨论】:

    • 对不起@user3580294,没有50 声望,我无法添加评论。
    • 啊,我明白了。复习,不知道。我很抱歉。
    【解决方案2】:

    @David,您的方向是正确的。当我在开发阶段混合语言时,我给 setter 取了错误的名字,我认为这并不重要,但确实如此。所以改变例如

    public String getBenutzername() {
        return username;
    }
    

    public String getUsername() {
        return username;
    }
    

    解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 2016-11-08
      • 2015-10-18
      相关资源
      最近更新 更多