如何在脚手架视图中隐藏字段但在 Grails 中添加新行时仍然强制执行?
How to hide a field in the scaffolding view but still enforce it when adding a new row in Grails?
我有一个简单的 Grails 应用程序,我想在一般脚手架视图中隐藏一些列,防止用户编辑它们,但在添加新项目时仍然强制指定它们。我查看了可能的限制,但看起来 none 非常符合要求:
column display: false
从视图中隐藏该列,但在所有地方都隐藏它,包括新项目添加视图
column editable: false
确实阻止了在编辑视图中编辑该列,但您也无法在添加新项目时定义它(+它根本没有隐藏)
那我应该怎么处理呢?我仍然希望能够利用动态脚手架功能,但似乎无法指定该列不显示在一般视图中,但在添加新内容时仍然强制执行它。有没有什么方法可以指定从哪个视图隐藏它,而不是全有或全无?
假设我们有以下域:
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' 这样的文本,这个仍会呈现该列,但不会显示任何值或您添加到文件中的任何文本,这也不是很好。
我有一个简单的 Grails 应用程序,我想在一般脚手架视图中隐藏一些列,防止用户编辑它们,但在添加新项目时仍然强制指定它们。我查看了可能的限制,但看起来 none 非常符合要求:
column display: false
从视图中隐藏该列,但在所有地方都隐藏它,包括新项目添加视图column editable: false
确实阻止了在编辑视图中编辑该列,但您也无法在添加新项目时定义它(+它根本没有隐藏)
那我应该怎么处理呢?我仍然希望能够利用动态脚手架功能,但似乎无法指定该列不显示在一般视图中,但在添加新内容时仍然强制执行它。有没有什么方法可以指定从哪个视图隐藏它,而不是全有或全无?
假设我们有以下域:
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' 这样的文本,这个仍会呈现该列,但不会显示任何值或您添加到文件中的任何文本,这也不是很好。