gpt4 book ai didi

grails - Grails Web Flow-将 map 传递到第一步/状态

转载 作者:行者123 更新时间:2023-12-02 15:13:27 25 4
gpt4 key购买 nike

我正在学习Grails,如果我缺少基本知识,请原谅我。

我正在尝试使用Grails Web Flow插件创建向导/ Web流。我想在流程的第一步中呈现一些变量。根据我对常规 Controller 的了解,通常可以通过使用映射将这些变量从 Controller 传递到 View 来完成。但是在WebFlow模型中,我不知道在哪里初始化这些变量以及如何将它们传递到第一步。我尝试创建一个初始化“操作”并将变量放入Flash作用域中,因为它知道该变量应该通过一次重定向,但不会在gsp上呈现。

怎么做?

这是 Controller 的片段,在控制台中显示“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,在呈现大小时会抛出null指针:
${flash.assessmentTypes.size}
<g:each var="assessmentType" in="${flash.assessmentTypes}">
<li><g:checkbox name="assessmentType" value="${assessmentType.id}" />${assessmentType.name}</li>
</g:each>

最佳答案

没问题...

使用流初始化器作为流中的第一步,然后将其移至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}" />

这未经测试,但应该可以正常工作。请享用 :)

关于grails - Grails Web Flow-将 map 传递到第一步/状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com