我在 Grails 中开发了一个简单的 webflow(主要是为了尝试使用 webflows——在这种情况下有点矫枉过正)。在对 Serializable 对象进行了一些试验和磨难之后,我让它工作了——有时。
这是问题 - 我在启动应用程序(运行应用程序)后第一次访问 webflow,我得到了这个异常:
2010-06-16 09:11:25,580 [http-8080-3] [ERROR] [org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver] No signature of method: groovy.lang.MissingMethodException.to() is applicable for argument types: (java.lang.String) values: [validate]
Possible solutions: is(java.lang.Object), any(), use([Ljava.lang.Object;), getAt(java.lang.String), with(groovy.lang.Closure), any(groovy.lang.Closure)
groovy.lang.MissingMethodException: No signature of method: groovy.lang.MissingMethodException.to() is applicable for argument types: (java.lang.String) values: [validate]
Possible solutions: is(java.lang.Object), any(), use([Ljava.lang.Object;), getAt(java.lang.String), with(groovy.lang.Closure), any(groovy.lang.Closure)
at com.sbs.component.survey.SurveyDefinitionController.invokeMethod(SurveyDefinitionController.groovy)
at com.sbs.component.survey.SurveyDefinitionController$_closure3.doCall(SurveyDefinitionController.groovy:23)
如果我“触摸”控制器(进行任何编辑,即使只是添加空格)然后保存文件,webflow 就会开始工作......似乎在控制器重新加载至少一次之前,有些东西没有连接起来. 显然这是一个非首发......任何想法是什么导致了这个?
我在 Mac OSX Java 1.6 上使用 Grails 1.3.1。
这是网络流的骨架:
def createSurveyFlow = {
select {
}.to("validate")
on("cancel").to("finish")
}
validate {
on("approve") {
}.to("finish")
on("disapprove").to("select")
on("cancel").to("finish")
}
finish {
action {
flash.message = "SurveyDefinition created"
}
redirect(controller:"surveyDefinition", action:"index")
}
}