【问题标题】:Add a field to a Grails Domain Class?向 Grails 域类添加字段?
【发布时间】:2010-10-13 12:12:42
【问题描述】:

我想向现有域类添加一个字段。我不想丢失我的视图文件,但是我知道如果我运行 generate-all 就会发生。还有其他方法可以更新映射等吗?

【问题讨论】:

    标签: grails


    【解决方案1】:

    我认为这是一个普遍的问题。

    这不是您问题的直接解决方案,但这是我所做的并且对我来说非常有效。

    1. 我从不直接修改 grails 脚手架构件(视图和控制器)

    2. 我将生产视图/控制器与脚手架工件分开;通过我使用脚手架作为我的应用程序控制器和视图的起点。

    3. 如果域模型发生更改,我会重新生成视图并从脚手架工件复制粘贴(尽可能)到手工编码的工件。

    4. 有时,我要么从应用程序中删除所有搭建的工件,要么只保护对它们的访问。

    希望这会有所帮助。

    【讨论】:

    • 如何命名您的自定义视图/控制器?看来您必须偏离 grails 命名约定才能使其正常工作。这是一个常见的问题,一个好的解决方案会很棒。
    • 视图和控制器的命名是根据应用需求来完成的。例如,在最近的一个应用程序中,有 50 个域类,应用程序界面有 5 个主菜单(主页、联系人、日历等)。所以,我的控制器是 HomeController、ContactsController 等等。
    【解决方案2】:

    有几种方法可以做到这一点。

    1. 如果您没有过多地修改生成的视图并且正在使用版本控制,您可以允许 grails 覆盖您的视图,然后将新模板的更改与版本控制中的内容合并。

    2. 如果您修改了生成的视图,您只需对覆盖视图的提示回答否即可。如果您只是添加新字段、更改字段名称或类似的简单操作,则手动修改视图模板应该非常简单。

    您将以相同的方式处理对控制器的任何可能更改。

    【讨论】:

      【解决方案3】:

      只要声明它:

      class MyDomain {
          String newField;
      }
      

      应该是你需要做的所有事情。

      【讨论】:

      • 这将覆盖他们不想要的现有视图。
      【解决方案4】:

      不要重新生成视图,只需将另一个类似的字段复制并粘贴到您要放入所需视图中的字段。

      【讨论】:

        猜你喜欢
        • 2012-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-03
        • 2010-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多