Grails中表单变量的范围

时间:2010-09-20 18:41:42

标签: grails scope

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

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

有没有办法增加变量的范围?

我现在要将其转换为面向服务的架构。因此,有没有办法在服务中访问这些数据?

请建议。

谢谢, 梅格斯

3 个答案:

答案 0 :(得分:0)

您可以添加...

params: params

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

答案 1 :(得分:0)

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

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

def formHandler = {
    // do stuff with params
    redirect(action: 'anotherAction', params: params)
}

如果您需要范围来跨越多个请求,例如如果您要向用户提供多步表单条目,则可以考虑使用web flows在请求之间保持状态。

对于服务,你最好只是传递你需要的服务方法的参数,而不是暴露params。示例(类似于访问服务部分here):

// service
def myServiceMethod(def foo, def bar) {
    // do stuff
}

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

从控制器向服务层公开参数会破坏Grails试图为您提供的面向层的方法;即“模型”和“控制器”组件(MVC)将更强烈地紧密耦合

答案 2 :(得分:0)

我还会看一下将链接操作作为传递模型信息的方法

http://www.grails.org/Controllers+-+Redirects