如何在脚手架视图中隐藏字段但在 Grails 中添加新行时仍然强制执行?

How to hide a field in the scaffolding view but still enforce it when adding a new row in Grails?

我有一个简单的 Grails 应用程序,我想在一般脚手架视图中隐藏一些列,防止用户编辑它们,但在添加新项目时仍然强制指定它们。我查看了可能的限制,但看起来 none 非常符合要求:

那我应该怎么处理呢?我仍然希望能够利用动态脚手架功能,但似乎无法指定该列不显示在一般视图中,但在添加新内容时仍然强制执行它。有没有什么方法可以指定从哪个视图隐藏它,而不是全有或全无?

假设我们有以下域:

class Thing {
    String userName
    String firstName
    Integer userId

    static constraints = {}
}

并且我们不希望编辑视图中的用户名是 editable,您创建以下目录...

\views\thing\edit\userName

然后在上面的目录中添加一个名为_widget.gsp的文件,内容如下...

${value}

这将仅显示用户名的文本值。

至于索引视图,如果您可以轻松隐藏该字段,我不是 100%。 我知道字段插件将根据域 class 定义中的顺序呈现 table 中的前 7 个字段。所以,如果你有 > 7 个字段,你可以在一个 > 7 的订单中给出你想要隐藏的字段,显然这里有很大的限制,你甚至可能没有 8 个字段,或者你可能想要隐藏多个字段...

你可以像上面那样对列表视图进行操作,但是创建一个名为 \views\thing\index\userName 的目录,然后创建一个名为 _displayWidget.gsp 的文件,里面什么都没有,或者可能有一些像 'Hidden' 这样的文本,这个仍会呈现该列,但不会显示任何值或您添加到文件中的任何文本,这也不是很好。