在我的 Grails 应用程序中,我创建了一个 User 类。在一个控制器中,我查询数据库以确认用户提供的信息是有效的。然后,我想将该 User 对象传递给另一个控制器以对其进行更多处理。这可能吗?谢谢!
问问题
1035 次
2 回答
1
对于您在控制器之间传递对象的问题,如果您使用的是 aredirect
或 aforward
您可以在参数映射中添加对象:
redirect(action: "actionName", user: userInstance)
或者
forward(action: "actionName", user: userInstance)
另一种解决方案是将用户存储在flash
对象中(下一个请求后清除的临时存储映射)或session
:
flash.user = userInstance
或者
session.user = userInstance
但在您的情况下,正如 tim_yates 所述,您应该创建一个服务来处理用户实体。为此,请执行以下命令:
create-service com.package.user
然后在新创建的类中添加您对用户执行的所有处理,并将用户服务注入控制器中,如下所示:
def controller{
def userService
def action(){
userService.validate(...)
}
}
于 2013-02-07T14:36:25.130 回答
0
本质上,@tim_yates 得到的是所有控制器的逻辑都应该在服务中。然后任何控制器中的任何操作都可以执行该逻辑,而无需重定向/转发请求。由于服务的交易性质,这也是应该的方式。
于 2013-02-07T18:22:42.650 回答