【问题标题】:Grails Web Flow - passing map to first step/stateGrails Web Flow - 将地图传递到第一步/状态
【发布时间】:2012-03-16 00:39:18
【问题描述】:

我正在学习 Grails,如果我遗漏了一些基本知识,请原谅我。

我正在尝试使用 Grails Web Flow 插件创建向导/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>

【问题讨论】:

标签: grails


【解决方案1】:

没问题...

使用流初始化器作为流中的第一步,然后将其移动到successinitFlow 上的第一步。

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 :( */)

}

步骤 1 GSP....

<g:select name="assessmentType.id" from="${assessmentTypes}" optionKey="id" value="${assessmentType?.id}" />

这是未经测试的,但它应该可以正常工作。享受:)

【讨论】:

猜你喜欢
  • 2011-11-01
  • 2011-01-05
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
相关资源
最近更新 更多