java - 如何在脚手架 View 中隐藏字段,但在 Grails 中添加新行时仍然强制执行它?

标签 java grails scaffolding

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

  • column display: false 从 View 中隐藏该列,但在任何地方都隐藏它,包括添加 View 的新项目
  • column editable: false 确实会阻止在编辑 View 中编辑该列,但您在添加新项目时也无法定义它(+它根本不隐藏)

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

最佳答案

假设我们有以下域:

class Thing {
    String userName
    String firstName
    Integer userId

    static constraints = {}
}

并且我们不希望用户名在编辑 View 上可编辑,您创建以下目录...

\views\thing\edit\userName

然后将名为 _widget.gsp 的文件添加到上面的目录,其中包含以下内容...

${value}

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

至于索引 View ,我不是100%能轻易隐藏字段。 我知道字段插件将根据域类定义中的顺序呈现表中的前 7 个字段。因此,如果您有 > 7 个字段,您可以以 > 7 的顺序给出您想要隐藏的字段,显然这里存在巨大的限制,您甚至可能没有 8 个字段,或者您可能想要隐藏多个字段...

您可以对 ListView 执行上述操作,但创建一个名为 \views\thing\index\userName 的目录,然后创建一个名为 _displayWidget.gsp 的文件,其中不包含任何内容它或者可能是“隐藏”之类的一些文本,这仍然会呈现该列,但不会显示任何值或您添加到文件中的任何文本,同样不太好。

关于java - 如何在脚手架 View 中隐藏字段,但在 Grails 中添加新行时仍然强制执行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54126287/

相关文章:

grails - Spock 集成测试用例中的应用真实路径问题

java - Hibernate - 集合未填充所有子项

grails - 即使我编写了自己的 currentTimeMillis 方法,我如何从 TimeStamp 中转义?

c# - 无法从脚手架创建新帐户

java - 在 RedHat 6 中将应用程序作为服务启动未使用预期的 Java 系统属性

java - 比使用大量 setter/getter 更好的方法/设计

java - Android 中使用 setText 的 id 问题

java - 为什么下载的文件会损坏?

grails - 在 CRUD grails 脚手架中自动生成 Jquery Autocomplete(一对多关系)

grails - Grails脚手架链接引用问题