我有3个域名: - 资格包含 - 资格排除 - EligibilitySummary
我还构建了eligibility.gsp(混合使用3个模板:_inclusion,_exclusion,_summary;我还使用JQueryUI选项卡在一个选项卡中呈现每个域)。
一切都很适合查看,但现在我只想使用一个控制器来创建,编辑,列表和显示 如何通过一个控制器处理3个域? (例如,我想使用EligibilityController来处理我的3个域名)
最佳用法是什么:
- 绑定多个objets?
- 使用命令对象?
答案 0 :(得分: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存储为隐藏字段。
答案 1 :(得分:0)
你不能只提交多个对象,如果其中一些具有相同的字段名,对吧?
我尝试将3个对象加入到具有3个字段的单个Command中,例如:inclusionInstance1, inclusingInstance2, summaryInstance1
和gsp-s中的名称字段,如name='command.inclusionInstance1.name'
。提交表单时,分配command.properties = params
应该有效。