Grails - 命令对象的专用源文件夹?

时间:2014-05-15 22:00:49

标签: grails command-objects

根据我的阅读,大多数人将命令对象放在控制器内部(我不喜欢它)或将它们放在src / groovy文件夹中的某个位置。

然而,我喜欢Grails如何为控制器,域,服务等提供特定文件夹,并且认为为命令对象创建新的源文件夹会很棒。 / grails-app /命令或者/ src /命令。以这种方式布局将有助于鼓励使用命令对象。

我有点担心这样做可能会破坏一些依赖于特定项目结构惯例的grails魔法。运行几个快速测试后,我确实验证了数据绑定和域约束导入似乎仍能正常运行。

对这种方法有任何想法或反对意见吗?

1 个答案:

答案 0 :(得分:5)

与顶级Grails工件(如域类,服务,taglib等)不同,框架对命令对象类没有任何特殊处理。例外情况是,如果它们是在控制器的控制器源文件中定义的,该控制器使用该类作为命令对象,在这种情况下,编译器将自动装配可验证的东西,而不必使用Validateable注释标记该类。如果要在其自己的源文件中定义命令对象类,那么如果您希望该事物可以进行验证,则需要Validateable注释(并非所有命令对象都需要进行验证)。鉴于此,我认为有一个特殊的地方来定义这些类源文件没有任何好处。如果它们没有在控制器源文件中定义,那么正常的做法是在src / groovy /下定义它们,除非你有充分的理由偏离该约定,否则你可能不应该这样做。

命令对象类几乎是Grails中的特殊事物,但实际上并非如此。您可以将任何内容用作控制器操作的参数。如果有某些原因,您可以使用Log4J提供的类作为命令对象。有一个特殊的地方来定义它们并不合理,IMO。

我希望有所帮助。