1

在我的 Grails 应用程序中,我创建了一个 User 类。在一个控制器中,我查询数据库以确认用户提供的信息是有效的。然后,我想将该 User 对象传递给另一个控制器以对其进行更多处理。这可能吗?谢谢!

4

2 回答 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 回答