绑定表单请求播放框架2.5.4时出错

时间:2016-07-10 21:35:28

标签: java mysql playframework playframework-2.3 ebean

我正在使用play-framework-java 2.5.4。

我想将用户输入值与我的模型类变量绑定。

除了 POST

之外,这是我的控制器功能
public Result formSubmit()
    {
        MlmModel mlmModel;
        play.data.Form<MlmModel> form = play.data.Form.form(MlmModel.class).bindFromRequest();
        mlmModel = form.get();
        mlmModel.save();
        mlmModel.callUpdate();
        return ok(Json.toJson(mlmModel));
    }

但我收到此错误

[CompletionException: java.lang.IllegalStateException: Error(s) binding form: {"parent_id":["Invalid value"]}]

因为,我的输入字段之一不是必须由用户填写。

如果用户将某些字段留空,那就没问题了。

但是我的代码应该

  • 保存用户提供给数据库的所有数据和
  • 默认情况下会为用户留空的字段保存 0

我正在使用 play-Eben ,我的数据库服务器是MySQL 5.x

我怎样才能做到这一点?

编辑1:

MlmModel.java

@Entity
public class MlmModel extends Model
{
    @Id
    @GeneratedValue()
    public Long ID;
    public Logic logic;
    public MlmModel() {
        this.parent_id = 0;
        logic = new Logic(this);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String name;


    public long getParent_id() {
        return parent_id;
    }

    public void setParent_id(long parent_id) {
        if (String.valueOf(parent_id).isEmpty())
            this.parent_id = 0;
        this.parent_id = parent_id;
    }
    @Column(columnDefinition = "long default 0")
    public long parent_id;

    @Formats.DateTime(pattern="dd/MM/yyyy")
    public Date created_time = new Date();

    public Long balance = new Long(0);

    public static Finder<Long, MlmModel> find = new Finder<Long,MlmModel>(MlmModel.class);



    public List<ValidationError> validate()
    {
        List<ValidationError> errors = new ArrayList<ValidationError>();
        if (Long.toString(parent_id).isEmpty())
            parent_id = 0;
        if (errors.isEmpty())
            return null;
        else
            return errors;
    }
}

0 个答案:

没有答案