【问题标题】:Scope of form variables in GrailsGrails 中表单变量的作用域
【发布时间】:2011-04-14 20:13:06
【问题描述】:

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

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

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

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

请指教。

谢谢, 梅格

【问题讨论】:

    标签: grails scope


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

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

      【讨论】:

      • 谢谢各位。我会尝试实现这一点。
      • 这里有 1 个问题。在这种情况下,控件如何转到视图。是来自服务...我们如何放下它?我们是否使用重定向来查看??请提供建议。谢谢,Megs
      • 视图由控制器动作呈现。控制器动作可以重定向到其他控制器动作。听起来您对 Grails 的工作方式有些陌生。也许看看这里的一个或多个教程不会有什么坏处:grails.org/Tutorials 以更好地了解 Grails 的工作原理。
      【解决方案3】:

      您可以添加...

      params: params

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多