EBean: Почему bindFromRequest () возвращает нулевые значения?

Я использую платформу Play с Sqlite.

Я создал модель - Бар

(содержимое app / models / Bar.java)

package models;

import javax.persistence.Entity;
import javax.persistence.Id;
import play.db.ebean.Model;

@Entity
public class Bar extends Model{

    @Id
    public String id;
    public String name;

    public Bar(String id, String name){
        this.id = id;
        this.name = name;

    }
    public Bar(){}

    public static Finder<String, Bar> find = new Finder(String.class, Bar.class);

}

И я пытаюсь добавить бары с помощью формы:

public static Result addBar(){
    Form<Bar> form = Form.form(Bar.class).bindFromRequest();
    Bar bar = form.get();
    bar.save();
    return redirect(routes.Application.index());

}

Но и идентификатор, и имя в баре здесь равны нулю. Пожалуйста, помогите мне понять, почему это происходит? Спасибо.


person vivekanon    schedule 10.08.2014    source источник
comment
Какое значение ebean.default в вашем application.conf файле?   -  person c4k    schedule 11.08.2014
comment
ebean.default = модели. *   -  person vivekanon    schedule 11.08.2014
comment
Затем попробуйте переименовать пакет Bar в models вместо model   -  person c4k    schedule 11.08.2014
comment
@Chafik Это сделал. Больше не получаю эту ошибку :) Но form.get () имеет нулевые значения! Что еще мне здесь не хватает?   -  person vivekanon    schedule 12.08.2014
comment
Я дал исчерпывающий ответ, вы можете принять его, если он решил вашу проблему   -  person c4k    schedule 12.08.2014


Ответы (1)


Ответьте на этот вопрос для будущих пользователей:

Если в файле application.conf конфигурация Ebean - ebean.default="models.*", то пакет, содержащий модели, должен быть models, а не model.

Что касается другого вопроса (form.get() имеет значение null), после привязки вашей формы из запроса вам необходимо убедиться, что в ней нет ошибок:

public static Result addBar() {
    Form<Bar> form = Form.form(Bar.class).bindFromRequest();
    if (form.hasErrors()) {
        // Do something with the errors (i.e. : redirect with flash message containing the main error)
    }
    Bar bar = form.get();
    bar.save();
    return redirect(routes.Application.index());
}
person c4k    schedule 12.08.2014