是否有在控制器的动作参数使用抽象命令对象的任何支持?那么根据JSON请求中给定的参数,它会选择正确的命令对象?Grails的控制器动作摘要Command对象参数
例如像:
class SomeController {
def someAction(BaseCommand cmd){
// cmd could be instance of ChildCommandOne or ChildCommandTwo
}
class BaseCommand {
String paramOne
}
class ChildCommandOne extends BaseCommand {
String paramTwo
}
class ChildCommandTwo extends BaseCommand {
String paramThree
}
}
截至目前我一直在使用request.JSON
检测参数传递和实例化正确的Command对象。这是我处理这种情况的唯一选择吗?
编辑:
要在这里澄清使用情况。我有两个共享相同基类域模型的域模型,我使用默认的table-per-hierarchy
模型在数据库中建模继承。
在我的情况下,子域模型Model A
中的一种需要一个叫做body
不可为空字符串,这是一个文本输入,而其他Model B
需要一个叫做directUrl
非空的字符串。这些代表了可以在平台上发布的公告。 Model A
正在进入一个写包含公告身体,而Model B
代表一个链接到包含实际公布第三方网站。
在这些类型的情景我已经把传统的if语句中,确定其中相关的命令对象实例化,但我希望有一个更清洁方法控制器动作。
嗯,我不认为它是一个很好的方法,如果你有3个不同的命令,为什么不ü创建3个不同的动作?也许这会更容易,如果你解释你的用例 – rgrebski
@rgrebski我已经更新了包含我的实际用例的问题。另外,如何区分这3个操作,而不必在我的url映射中正式声明单独的终结点? – dvisco