Grails webflow-将基于动作的转换为web流

Grails webflow-将基于动作的转换为web流,grails,Grails,我们的应用程序正在使用控制器中的正常操作工作,但是从一个页面返回到另一个页面有一些困难。我的任务是将其转换为使用web流,我遇到了各种各样的障碍。非常感谢您的建议和见解 控制器具有列表、查看、创建、签名和打印操作。我已经做到了: def index = { redirect (action: "someFlow") } def someFlow = { init { // some object settings } on("success").

我们的应用程序正在使用控制器中的正常操作工作,但是从一个页面返回到另一个页面有一些困难。我的任务是将其转换为使用web流,我遇到了各种各样的障碍。非常感谢您的建议和见解

控制器具有列表、查看、创建、签名和打印操作。我已经做到了:

def index = {
    redirect (action: "someFlow")
}

def someFlow = {
    init {
        // some object settings
    }
    on("success").to("list")

    list {
    }
    on("create").to "create"
    on("view).to "view"

    create {
    }
    on("next").to "sign"
    on("cancel).to "list"

    view {
    }
    on("edit").to "create"
    on("back").to "list"

    sign {
    }
    on("done").to "list"
    on("back").to "create"

    edit {
    }
    on("done").to "view"

}
当我用调试器跟踪它时,它似乎会连续命中每个状态,而不做任何操作或在任何页面上停止。然后返回列表状态

如果我单击“创建”的链接,我会看到一个网页,告诉我“资源(/directory path/create)不可用。”

但是如果它能找到list.gsp,为什么它不能找到create.gsp呢

我觉得我在黑暗中盲目地摸索;这些书似乎都没有提到这一点,我也找不到任何其他资源来说明它为什么会这样。有人有主意吗

谢谢。

打开”语句需要在闭包内。例如,这:

list {
}
on("create").to "create"
on("view").to "view"
应该是这样的:

list {
    on("create").to "create"
    on("view").to "view"
}
这至少可以解决在整个流程中飞行的问题。至于找不到GSP,您需要在文件夹中为控制器创建一个文件夹(名为“some”)。将流程中每个操作的GSP放在这里


话虽如此,我同意Rob的观点,即它似乎不是一个很好的webflow候选者。

为了获得更多信息,你能给我们一个目录列表,列出你的应用程序/grails应用程序/views/someFlow/?另外,也许我遗漏了一些东西,但是你所制定的行动看起来并不是很好的WebFlow候选方案。这些只是标准的(搭建的)Grails控制器操作吗?如果是这样的话,我不认为使用WebFlow是在它们之间导航的最佳方法。也许你可以评论一下你的“从一页倒退到另一页的困难”是什么。还有一个更好的解决方案。另外,最后一个注释-您的
列表中缺少一个
。“查看”-您的实际代码中也缺少该注释吗?因此,对于.gsp文件,目录结构如下所示:my_application/grails app/views/someFlow/。当然,控制器是控制器目录中的一级。标准的grails设置真的很好。至于这是否真的是webflows的最佳候选者,这并不完全取决于我。这就是我的任务。同时,我对这个例子表示歉意。我确实用完整的引号引用了on(“视图”),是的,“on”语句在大括号内。