gpt4 book ai didi

playframework-2.0 - 未定义的 session() 方法, Play 验证

转载 作者:行者123 更新时间:2023-12-04 08:57:46 26 4
gpt4 key购买 nike

我正在尝试在 play-authenticate 模块的 User 模型和我的模型 - Books 之间建立关系。我正在使用 play 2.0.4 并将 play-authenticate 集成到我的项目中。在我的 Controller /应用程序中,我有 getLocalUser 方法:

public static User getLocalUser(final Session session) {
final User localUser = User.findByAuthUserIdentity(PlayAuthenticate
.getUser(session));
return localUser;
}

我正在尝试在我的 Books 模型中覆盖 Model 的方法,以保存添加/修改图书记录的用户。

public void save() {
User logged = Application.getLocalUser(session());
if (logged != null) {
this.createUser = logged;
this.modifyUser = logged;
}
super.save();
}

public void update(Object o) {
User logged = Application.getLocalUser(session());
if (logged != null) {
this.modifyUser = logged;
}
super.update(o);
}

我执行此操作时遇到的错误,我不明白是:

Books 类型未定义方法 session()。

我不确定这是怎么回事,因为我确实可以访问 Controller /应用程序方法,因为我的导入:

import controllers.Application;

更新: *

public static Result createBook() {
Form<Book> filledForm = bookForm.bindFromRequest();

if(filledForm.hasErrors()) {
return badRequest(
views.html.bookCreator.render(Book.all(), filledForm)
);
}
else {
Book.create(filledForm.get());
//Book.save(getLocalUser(session()));
return redirect(routes.Application.createSuccess());
}
}*

最佳答案

首先,在你的模型类中调用 session() 是一个非常糟糕的主意,因为如果你这样做,你将创建某种循环依赖(表示层 -> 模型 ->表示层)。

如果你真的想保持这种状态,就这样做:

Controller :

public static User getLocalUser() {
final User localUser = User.findByAuthUserIdentity(PlayAuthenticate
.getUser(session()));
return localUser;
}

型号:

public void save() {
User logged = Application.getLocalUser();
if (logged != null) {
this.createUser = logged;
this.modifyUser = logged;
}
super.save();
}

public void update(Object o) {
User logged = Application.getLocalUser();
if (logged != null) {
this.modifyUser = logged;
}
super.update(o);
}

但我更愿意这样做:

Controller :

public Result anAction() {
...
save(getLocalUser(session()));
...
}

型号:

public void save(final User logged) {
if (logged != null) {
this.createUser = logged;
this.modifyUser = logged;
}
super.save();
}

public void update(Object o, final User logged) {
if (logged != null) {
this.modifyUser = logged;
}
super.update(o);
}

关于playframework-2.0 - 未定义的 session() 方法, Play 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com