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