0

だから私は Play でプロファイル編集機能をやっています! フレームワーク (2.2.0);

私はこのコードを持っています

public static Result doEditProfile(){

        final User localUser = getLocalUser(session());

        Form<User> formData = editProfileForm.bindFromRequest();

        if (formData.hasErrors()) {
           return badRequest(views.html.editprofile.render(localUser, editProfileForm));
        } else {
            localUser.firstName = formData.field("firstName").value();
            localUser.lastName = formData.field("lastName").value();
            localUser.locale = formData.field("locale").value();
            localUser.gender = formData.field("gender").value();
            localUser.country = formData.field("country").value();
            localUser.save();
        }

        return redirect("/profile/edit");
    }

できます。しかし、これを行うためのより良い方法があることを知りたいですか?

私はこのことを試しました:

1)

public static Result doEditProfile(){

        final User localUser = getLocalUser(session());

        Form<User> formData = editProfileForm.bindFromRequest();

        if (formData.hasErrors()) {
           return badRequest(views.html.editprofile.render(localUser, editProfileForm));
        } else {
            User localUser = formData.get();
            localUser.save();
        }

        return redirect("/profile/edit");
    }

しかし、これは、変数 localUser が既に定義されていることを示しています。

2)また、私はこれを試しました

public static Result doEditProfile(){

        final User localUser = getLocalUser(session());

        Form<User> formData = editProfileForm.bindFromRequest();

        if (formData.hasErrors()) {
           return badRequest(views.html.editprofile.render(localUser, editProfileForm));
        } else {
            User updatedUser = formData.get();
            updatedUser.save();
        }

        return redirect("/profile/edit");
    }

しかし、このコードはデータベースに新しいユーザーを作成しています。

私は Play を初めて使用するので、アドバイスをお待ちしています。私の英語に感謝し、申し訳ありません

4

2 に答える 2

0

ユーザーは一意の ID を持っていますか? その場合は、次のことを試すことができます。

updatedUser.setId(localUser.getId())
updatedUser.save()
于 2013-10-25T22:32:09.453 に答える