【问题标题】:How to go from one view state to another view state in grails webflow plugin using glink tag?如何使用 glink 标签在 grails webflow 插件中从一个视图状态转到另一个视图状态?
【发布时间】:2014-10-07 00:58:09
【问题描述】:

我有以下具有 2 个视图状态的 webflow 表示

def createFlow = {
  startState {
    on("addItem"){
      //do something
    }.to "startState"

    on("deleteItem"){
      //do something
    }.to "startState"
  }

  secondState {
    on("addItem"){
      //do something
    }.to "startState"

    on("deleteItem"){
      //do something
    }.to "startState"
  }
}

在每个视图状态下,我都希望有一个 glink 标签来互相调用,我尝试了这个解决方案但没有成功

<g:link action="create" event="startState">Start</g:link>
<g:link action="create" event="secondState">Second</g:link>

我明白了

在流 'purchaseOrder/create' 的状态 'startState' 中发生事件 'startState' 时未找到转换 -- 有效的转换条件是数组 [addItem, deleteItem] -- 可能是程序员错误,请检查该设置的 TransitionCriteria状态

我的问题是,可以从glink标签调用自身视图状态还是其他视图状态?

感谢您的宝贵时间

【问题讨论】:

  • 在上面的示例中,您没有任何方法可以转换到“secondState”。这是示例的人工制品还是您的问题?我本来希望在至少一个 startState 事件处理程序的 .to 中看到到“secondState”的转换。
  • 这是我的问题,如果可以直接

标签: grails


【解决方案1】:

可以使用 g:link 来触发事件。

你的网络流的结构应该是这样的:

def createFlow = {
  startState {
    on("goToSecond"){
      //do something
    }.to "secondState"
  }

  secondState {
    on("goToStart"){
      //do something
    }.to "startState"
  }
}

在 create/startState.gsp 中

<g:link action="create" event="goToSecond">Second</g:link>

在 create/secondState.gsp 中

<g:link action="create" event="goToStart">Start</g:link>

关键是:

  1. 您始终处于一种状态,每个状态都可以处理一个或多个事件。
  2. 您发出信号会导致当前状态的事件处理程序触发,并且如果您以这种方式设置,则移动到另一个状态。
  3. 每个状态都有一个视图,您可以使用 g:submit 或 g:link 来发出事件信号。

在您的情况下,当您真的想发出事件名称的信号时,您试图直接发出状态信号。此外,看起来您正试图从单一视图中执行此操作。可以将单个视图绑定到多个状态(使用视图覆盖或使用模板),但这样做并没有多大意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多