update方法为play框架2中的复杂对象返回null值

时间:2013-11-14 17:42:31

标签: java playframework playframework-2.0 sql-update playframework-2.2

Play framework 2 update()方法在我的项目中很奇怪。

我的项目有以下模型类:

@entity
public class Images{

    @Id
    public Long id;

    @Lob
    public byte[] imageFile;
}


@entity
public class Users {

    @Id
    public Long id;

    public String name;

    public Blobs photo;
} 

这是index.scala.html:

@(user : Users)
<p>@user.id</p>
<p>@user.name</p>
<p>@user.photo.id</p> 
<a href="@routes.Application.editUser(1L)">edit user no. 1</a>

这是我的editUser.scala.html中的代码:

@(id : Long, userForm : Form[Users])
@form(action = routes.Application.update(id))
@inputText(userForm("name"))
@inputText(userForm("photo.id"))
<input type="submit" value="UPDATE">

这是我的控制器类:

public class Application extends Controller {

    public static Result index() {
        return ok(index.render(Users.find.byId(1L)));
    }

    public static Result editUser(Long id) {
        Form<Users> userForm = form(Users.class).fill(Users.find.byId(id));
            return ok(
        views.html.editUser.render(id, userForm)
    );
   }

    public static Result update(Long id) {
        Form<Users> userForm = form(Users.class).bindFromRequest();
        userForm.get().update(id);
        return redirect((routes.Application.index()));
    }

}

假设Blobs类中有一个条目,其id = 1且一个blob,并且Users类中有一个条目,id = 1。现在我想更新该用户并从Blobs表中设置照片ID。

问题是当我尝试从editUser表单更新用户并返回index.scala.html时,我得到一个空指针异常。似乎update()方法只是在Users表单中为photo字段返回null,尽管更新用户的名称值没有问题。我检查了userForm.field(“photo”)。value(),似乎bindFromRequest正常工作。但更新后,photo字段仅为空。有谁知道问题可能是什么?

编辑: P.S:该程序将以空指针异常开始,因为在程序开始时Users的照片字段为空。假设我们直接转到修改页面,然后尝试使用Blob中的Users更新photo。问题是即使在更新之后,我得到空指针异常,似乎更新不会影响User

中的那个字段

0 个答案:

没有答案