0

我有 3 个域: - EligibilityInclusion - EligibilityExclusion - EligibilitySummary

我还构建了资格.gsp(混合使用 3 个模板:_inclusion、_exclusion、_summary;而且我还使用 JQueryUI 选项卡在一个选项卡中呈现每个域)。

一切都可以观看,但现在我只想使用一个控制器来创建、编辑、列出和显示。
如何仅通过一个控制器处理 3 个域?
(例如,我想使用 EligibilityController 来处理我的 3 个域)

最好的用法是什么:
- 绑定多个对象?- 使用命令对象?

4

2 回答 2

2

不幸的是,命令对象对视图的输入模型没有帮助,它们专门设计用于帮助输出模型绑定和验证请求参数。但是,如果您准备深入研究一些元编程以实现数据绑定以创建视图模型,则可以基于命令对象滚动您自己的视图模型。
这是一个基本的方法。以下代码构造了命令对象,然后您可以将其作为模型传递给控制器​​中的视图:

class ItemCommand {
 // attribute declarations ...

public void bindData(def domainInstance){
    domainInstance.properties.keySet().each { prop ->
        if(prop == "class"){
            // not needed
        } else if(prop == "metaClass") {
            // not needed
        } else if(this.properties.containsKey(prop)){
            this."${prop}" = domainInstance."${prop}"
        }
    }
}

这将允许您通过为每个域对象调用 bindData 来绑定来自不同域对象的数据。

这是我使用的解决方案的精髓。如果您打算对域对象进行更新,则需要将不同域对象的 ID(和版本属性)存储为隐藏字段。

于 2011-02-01T00:11:49.663 回答
0

您不能只提交多个对象,如果其中一些具有相同的字段名称,对吗?

我会尝试将 3 个对象加入到具有 3 个字段的单个 Command 中,例如:inclusionInstance1, inclusingInstance2, summaryInstance1和 gsp-s 中的名称字段,例如name='command.inclusionInstance1.name'. command.properties = params提交表单时分配应该工作。

于 2011-01-31T21:34:15.757 回答