【问题标题】:Access grails zkui composer instance of dynamically included view from its parent从父级访问动态包含视图的 grails zkui composer 实例
【发布时间】:2015-02-12 14:51:26
【问题描述】:

我真的可以在这里使用一些帮助。场景是我根据用户交互动态地在我的 web 应用程序中包含视图。主要问题是我需要访问包含的视图作曲家的当前实例。

当用户做出一些选择并加载子视图时,用户可以在子视图中输入值,然后我需要将这些值收集到主视图中。

一些代码片段以某种方式显示了我要完成的工作:(仅必要的部分)

grails-app/views/mainview/main.gsp
    ...
    <z:div id="mainContent"></z:div>
    ...

grails-app/views/mainview/templates/one.gsp
    <z:window apply="org.package.composers.OneComposer">
        ...
    </z:window>

grails-app/views/mainview/templates/two.gsp
    <z:window apply="org.package.composers.TwoComposer">
        ...
    </z:window>

grails-app/composers/org/packages/composers/MainComposer.groovy
    Div mainContent
    Composer currentSubComposer = null
    ...
    void setSubContent(String templateURI){
        mainContent.children.clear()
        mainContent << { include(src: templateURI) }
        currentSubComposer = /* HOW TO GET THE COMPOSER INSTANCE ? */
    }
    ...

我知道,如果您在主视图中“静态”包含子视图 不使用动态使用包含,然后您可以从 parent 如下代码片段所示:

grails-app/views/common/_subview.gsp
    <z:window id="subview" apply="org.package.composers.SubviewComposer">

grails-app/views/mainview/main.gsp
    ...
    <z:div id="mainContent">
        <g:render template="/common/subview" />
    </z:div>
    ...

grails-app/composers/org/packages/composers/MainComposer.groovy
    Window subview
    Composer c = (Composer)subview.getAttribute("subview#composer")

但我不能这样做,因为一切都是动态的。我需要能够做到 不知何故,同样的事情。

所以分解基本问题:

  • 我有一个主要作曲家
  • 在主作曲家中,我包含一个 gsp 文件(子视图)
  • 子视图有自己的作曲家

如何从主作曲家访问子视图作曲家实例?

任何帮助表示赞赏!

【问题讨论】:

    标签: grails zk


    【解决方案1】:

    如果其他人有兴趣,我将使用 grails 会话发布我自己的解决方案。也许还有其他方法可以解决这个问题,但可以解决问题:

    我在主作曲家中创建了一个回调/注册方法:

    public void registerChildComposer(Composer c){
        currentChildComposer = c
    }
    

    在子视图包含在主作曲家之前:

    session["parentComposerInstance"] = this
    

    并在子视图composer的doAfterCompose中:

    Composer parentComposer = session["parentComposerInstance"]
    parentComposer.registerChildComposer(this)
    

    瞧,在这种类似“握手”的模式之后,我得到了我正在寻找的子视图作曲家的句柄。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      相关资源
      最近更新 更多