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

时间:2019-01-10 10:08:56

标签: java grails scaffolding

我有一个简单的Grails应用程序,我想在一般的脚手架视图中隐藏一些列,以防止用户对其进行编辑,但在添加新项目时仍要强制指定它们。我研究了可能的限制,但似乎没有一个完全符合要求:

  • column display: false从视图中隐藏该列,但将其隐藏在所有位置,包括添加视图的新项
  • column editable: false确实会阻止在编辑视图中对列进行编辑,但是添加新项时也无法对其进行定义(+一点也不隐藏)

那么我应该如何解决呢?我希望仍然能够利用动态脚手架功能,但是似乎无法指定该列以使其不在常规视图中显示,但是在添加新内容时仍然可以强制执行。有什么方法可以指定要从哪个视图中隐藏该视图,而不是全部消失或全部消失?

1 个答案:

答案 0 :(得分:1)

假设我们拥有以下域:

class Thing {
    String userName
    String firstName
    Integer userId

    static constraints = {}
}

我们不希望userName在编辑视图上可编辑,而是创建以下目录...

\views\thing\edit\userName

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

${value}

仅显示用户名的文本值。

至于索引视图,如果您可以轻松地隐藏字段,我不是100%。 我知道字段插件将按照域类定义中的顺序确定表中的前7个字段。因此,如果您有> 7个字段,则可以按顺序将要隐藏的字段设置为> 7,显然这里有很大的限制,您甚至可能没有8个字段,或者您可能希望隐藏多个字段...

您可以对列表视图执行上述操作,但是创建一个名为\views\thing\index\userName的目录,然后创建一个名为_displayWidget.gsp的文件,其中没有任何内容,或者可能没有诸如“ Hidden”之类的文本,这仍会呈现列,但不显示任何值或您添加到文件的任何文本,同样也不是很好。