Grails中表单变量的作用域

Grails中表单变量的作用域,grails,scope,Grails,Scope,我正在创建一个Grails应用程序,它有一个带有文本字段的输入页面。在这里,用户可以输入数据,提交时,控件转到控制器中的操作。 这里我使用params.empName等获得表单数据的值 但是,这些数据的范围非常小,如果我从当前操作重定向到另一个操作,则无法继续 有没有办法扩大变量的范围 我现在要将其转换为面向服务的体系结构。因此,是否也有办法访问服务中的这些数据 请给我一些建议 谢谢, Megs您可以添加 params:params …作为重定向的参数,以便传入的参数与重定向一起发送。我认为没有

我正在创建一个Grails应用程序,它有一个带有文本字段的输入页面。在这里,用户可以输入数据,提交时,控件转到控制器中的操作。 这里我使用params.empName等获得表单数据的值

但是,这些数据的范围非常小,如果我从当前操作重定向到另一个操作,则无法继续

有没有办法扩大变量的范围

我现在要将其转换为面向服务的体系结构。因此,是否也有办法访问服务中的这些数据

请给我一些建议

谢谢, Megs

您可以添加

params:params


…作为重定向的参数,以便传入的参数与重定向一起发送。

我认为没有内置的方法来增加范围。这可能是件好事

如果要在控制器中重定向,只需通过
redirect()
参数传递必要的参数即可。例如:

def formHandler = {
    // do stuff with params
    redirect(action: 'anotherAction', params: params)
}
如果您需要作用域来跨越多个请求,例如,如果您向用户提供了一个多步骤表单条目,则可以考虑使用来在请求之间保持状态

对于服务,最好只将所需的作为参数传递给服务方法,而不是公开参数。示例(类似于访问服务部分):


将参数从控制器公开到服务层将打破Grails试图提供给您的面向层的方法;i、 e.“模型”和“控制器”组件(MVC)将更加紧密耦合

我还将研究链接操作作为传递模型信息的一种方式


谢谢大家。我试着实现这个。这里有一个问题。在这种情况下,控件如何转到视图。这是来自服务…我们如何写下它?我们是否使用重定向来查看?请提供建议。谢谢,MegsView是由控制器操作呈现的。控制器操作可以重定向到其他控制器操作。听起来您对Grails的工作方式有些不熟悉。也许在这里查看一个或多个教程不会有什么坏处:更好地了解Grails的工作原理。
// service
def myServiceMethod(def foo, def bar) {
    // do stuff
}

// controller
def myService
def myControllerAction {
    myService.myServiceMethod(params.foo, params.bar)
}