【问题标题】:Grails SubFlow doen't render its view page and returns HTTP 404Grails SubFlow 不呈现其视图页面并返回 HTTP 404
【发布时间】:2015-01-03 01:43:10
【问题描述】:

我正在使用 Grails 2.3.6 并安装了 WebFlow 2.0.8.1 插件。我正在尝试使用 SubFlow 进行概念验证。查看示例 SubFlow documented here 后,我很难让一个简单的 SubFlow 工作。

注意:我是 Grails 和 WebFlow 的新手。

这是我的项目结构:

HelloController 呈现此页面:

DemoController 呈现此页面:

但是,当我单击 HelloController 页面上的 Go To Sub Flow 按钮时,我得到一个 404:

如果我提供/hello/hello/subflowDemo.gsp,页面会呈现,但它不是来自DemoController 的页面。

我做错了什么?

HelloController

package helloworld

class HelloController {
    def helloFlow = {
        hello {
            on("goToSub").to "subflowDemo"
        }
        subflowDemo {
            subflow(controller: "demo", action: "demo")
        }
    }
}

hello.gsp

<html>
<body>
    Hello world!
    <g:form>
        <g:submitButton name="goToSub" value="Go To Sub Flow" />
    </g:form>
</body>
</html>

DemoController

package helloworld

class DemoController {
    def demoFlow = {
        demo {
        }
    }
}

demo.gsp

<html>
<body>
    This is the demo screen!
</body>
</html>

【问题讨论】:

    标签: grails groovy grails-plugin spring-webflow


    【解决方案1】:

    您必须完成流程循环。我相信子流的状态不能是主流的结束状态。所以在主流程中结束流程。

    以下代码更改对我有用,

    HelloController.groovy

    class HelloController {
    
        def helloFlow = {
            hello {
                on("goToSub").to "subflowDemo"
            }
            subflowDemo {
                subflow(controller: "demo", action: "demo")
                on("gotomainflow").to "endstate" // have a transition to endstate
    
            }
            endstate {
    
            }
        }
    
    }
    

    views/hello/hello/endstate.gsp 中的 endstate.gsp

    <html>
    <body>
        Came Back to main- endstate
    </body>
    </html>
    

    DemoController.groovy

    class DemoController {
        def demoFlow = {
            demo {
                on("gotomainflow").to "gotomainflow" //have the transition which calls a event
            }
            gotomainflow() // this event will trigger the event in the main flow
        }
    }
    

    views/demo/demo/中的demo.gsp

    <html>
    <body>
        This is the demo screen!
        <g:form>
            <g:submitButton name="gotomainflow" value="Go To Main Flow" />
        </g:form>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 2011-08-21
      • 2021-11-26
      • 2020-05-12
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 2013-08-28
      相关资源
      最近更新 更多