GrailsWeb流-将映射传递到第一步/状态

GrailsWeb流-将映射传递到第一步/状态,grails,Grails,我正在学习Grails,所以如果我遗漏了一些基本的东西,请原谅我 我正在尝试使用GrailsWebFlow插件创建向导/web流。我想在流程的第一步呈现一些变量。从我读到的关于普通控制器的内容来看,这通常是通过使用映射将这些变量从控制器传递到视图来实现的。但是在WebFlow模型中,我不知道在哪里初始化这些变量,以及如何将它们传递到第一步。我尝试创建一个初始化“操作”,并将变量放入flash范围,知道它应该通过一个重定向,但它不会在gsp上呈现 这是怎么做到的 这是控制器的剪报,它在控制台中打印

我正在学习Grails,所以如果我遗漏了一些基本的东西,请原谅我

我正在尝试使用GrailsWebFlow插件创建向导/web流。我想在流程的第一步呈现一些变量。从我读到的关于普通控制器的内容来看,这通常是通过使用映射将这些变量从控制器传递到视图来实现的。但是在WebFlow模型中,我不知道在哪里初始化这些变量,以及如何将它们传递到第一步。我尝试创建一个初始化“操作”,并将变量放入flash范围,知道它应该通过一个重定向,但它不会在gsp上呈现

这是怎么做到的

这是控制器的剪报,它在控制台中打印“4”:

class ServicesController {

def index() {
    redirect(action: "initialize")
}

def initialize() {
    flash.assessmentTypes = AssessmentType.list()
    println flash.assessmentTypes.size
    redirect(action: "request")
}

def requestFlow = {
    selectAssessments {
        on("next") {
            // capture assessments
        }.to("productInfo")
        on("cancel").to("finish")
    }

...
和gsp的一个剪子,在渲染大小时抛出一个空指针:

${flash.assessmentTypes.size}
<g:each var="assessmentType" in="${flash.assessmentTypes}">
  <li><g:checkbox name="assessmentType" value="${assessmentType.id}" />${assessmentType.name}</li>
</g:each>
${flash.assessmentTypes.size}
  • ${assessmentType.name}
  • 没问题

    使用流初始值设定项作为流中的第一步,然后将其移动到
    initFlow
    success
    上的第一步

    def wizardFlow = {
    
        initFlow {
    
          flow.assessmentTypes = AssessmentType.list();  //<-- put them in the flow so you can access it in step1.gsp
    
        }
        on('success').to('step1') 
        on(Exception).to('handleFlowError')
    
        step1{
            on('next'){ 
                flow.asessmentType = AssessmentType.get(params.assessmentType.id);
                println("They picked ${flow.asessmentType}.");
            }.to('step2')
            on('exit').to('exit')
        }
        step2{
            on('next'){ /* do stuff */ }.to('finish')
            on('previous').to('step1')
            on('exit').to('exit')
        }
    
       exit( /* exit flow before finish */ )
       finish( /* finish up */ )
       handleFlowError( */ not good :( */)
    
    }
    
    def向导流={
    初始流{
    
    flow.assessmentTypes=AssessmentType.list();//此处提出的类似问题:发现另一个基本相同的问题:。此问题可以关闭。哇,另一个问题:谢谢Michael。此答案可能有效,但在我找到了更多搜索和其他一些参考后,这些参考表明在第一个状态下需要“操作”块。
    <g:select name="assessmentType.id" from="${assessmentTypes}" optionKey="id" value="${assessmentType?.id}" />