向 Grails 域类添加字段?
Posted
技术标签:
【中文标题】向 Grails 域类添加字段?【英文标题】:Add a field to a Grails Domain Class? 【发布时间】:2010-10-13 12:12:42 【问题描述】:我想向现有域类添加一个字段。我不想丢失我的视图文件,但是我知道如果我运行 generate-all 就会发生。还有其他方法可以更新映射等吗?
【问题讨论】:
【参考方案1】:我认为这是一个普遍的问题。
这不是您问题的直接解决方案,但这是我所做的并且对我来说非常有效。
我从不直接修改 grails 脚手架构件(视图和控制器)
我将生产视图/控制器与脚手架工件分开;通过我使用脚手架作为我的应用程序控制器和视图的起点。
如果域模型发生更改,我会重新生成视图并从脚手架工件复制粘贴(尽可能)到手工编码的工件。
有时,我要么从应用程序中删除所有搭建的工件,要么只保护对它们的访问。
希望这会有所帮助。
【讨论】:
如何命名您的自定义视图/控制器?看来您必须偏离 grails 命名约定才能使其正常工作。这是一个常见的问题,一个好的解决方案会很棒。 视图和控制器的命名是根据应用需求来完成的。例如,在最近的一个应用程序中,有 50 个域类,应用程序界面有 5 个主菜单(主页、联系人、日历等)。所以,我的控制器是 HomeController、ContactsController 等等。【参考方案2】:有几种方法可以做到这一点。
如果您没有过多地修改生成的视图并且正在使用版本控制,您可以允许 grails 覆盖您的视图,然后将新模板的更改与版本控制中的内容合并。
如果您修改了生成的视图,您只需对覆盖视图的提示回答否即可。如果您只是添加新字段、更改字段名称或类似的简单操作,则手动修改视图模板应该非常简单。
您将以相同的方式处理对控制器的任何可能更改。
【讨论】:
【参考方案3】:只要声明它:
class MyDomain
String newField;
应该是你需要做的所有事情。
【讨论】:
这将覆盖他们不想要的现有视图。【参考方案4】:不要重新生成视图,只需将另一个类似的字段复制并粘贴到您要放入所需视图中的字段。
【讨论】:
以上是关于向 Grails 域类添加字段?的主要内容,如果未能解决你的问题,请参考以下文章