GrailsWeb流

GrailsWeb流,grails,groovy,spring-webflow,Grails,Groovy,Spring Webflow,有没有办法将模型数据传递到视图状态?考虑下面的示例视图状态: class BookController { def shoppingCartFlow = { showProducts { on("checkout").to "enterPersonalDetails" on("continueShopping").to "displayCatalogue" } } } 如果我想将数据模型[products:Product.list()]传递到sh

有没有办法将模型数据传递到视图状态?考虑下面的示例视图状态:

class BookController {
  def shoppingCartFlow = {
    showProducts {
      on("checkout").to "enterPersonalDetails"
      on("continueShopping").to "displayCatalogue"
    }
  }
}
如果我想将数据模型
[products:Product.list()]
传递到showProducts.gsp,除了在视图状态前面加上一个将模型存储在流范围中的操作状态之外,还有其他方法吗

谢谢,
不要

也许我不明白这个问题,但你不明白吗

渲染(视图:“showProducts”, 型号:[产品:Product.list()]

在控制器内部?

您可以尝试以下方法(假设您想结帐):


嗯,自从我做了一个流程以来已经有一段时间了,你的例子太简单了(我希望只是为了做一个例子)

您缺少的是流程中的初始操作。请记住,作为showProducts的“查看”流程操作只是说明当您的showProducts gsp发布时要做什么。正是该操作将您发送到showProducts,以创建要在showProducts.gsp中使用的模型

def ShoppingCartFlow = {
   initialize {
       action {  // note this is an ACTION flow task
           // perform some code
           [ model: modelInstance ] // this model will be used in showProducts.gsp
       }
       on ("success").to "showProducts"      
       // it's the above line that sends you to showProducts.gsp
   }

   showProducts {
        // note lack of action{} means this is a VIEW flow task
        // you'll get here when you click an action button from showProducts.gsp
      on("checkout").to "enterPersonalDetails"
      on("continueShopping").to "displayCatalogue"
   }

   // etc. (you'll need an enterPersonalDetails task, 
   // displayCatalogue task, and they
   // should both be ACTION tasks)
}

有意义吗?

这不是一个正常的控制器操作,这是一个web流状态。我不确定渲染方法是否可以在视图状态中按照您的建议使用。我想将数据传递到showProducts.gsp,而不是enterPersonalDetails.gsp这正是我实现它的方式,使用2声明:操作状态后跟视图状态。我的问题是我想答案是否定的。正确的,你唯一可以拥有代码(包括创建模型)的时间是在操作任务或“转换”任务中(在视图任务中的on(“”)和.to“”之间)
def ShoppingCartFlow = {
   initialize {
       action {  // note this is an ACTION flow task
           // perform some code
           [ model: modelInstance ] // this model will be used in showProducts.gsp
       }
       on ("success").to "showProducts"      
       // it's the above line that sends you to showProducts.gsp
   }

   showProducts {
        // note lack of action{} means this is a VIEW flow task
        // you'll get here when you click an action button from showProducts.gsp
      on("checkout").to "enterPersonalDetails"
      on("continueShopping").to "displayCatalogue"
   }

   // etc. (you'll need an enterPersonalDetails task, 
   // displayCatalogue task, and they
   // should both be ACTION tasks)
}