我是新手,请告诉我如何在控制器中写脚手架true之后如何在列中显示约束,即我在域名,电子邮件,密码,手机中有列,但我想显示当列表显示时,网格中只有姓名,电子邮件和电话,有没有办法通过域名执行此操作?请给我一个解决方案,谢谢。
答案 0 :(得分:2)
您可以安装模板(http://grails.org/doc/latest/ref/Command%20Line/install-templates.html)
grails install-templates
模板允许您覆盖Grails在控制器,视图等中使用的默认模板。如果查看src / templates / scaffolding / list.gsp,您可以看到它们已经排除了某些属性('id'和'版)。我在我的域类中添加了一个静态列表:
static excludedFromListViewProperties = ["password"]
在list.gsp中我替换了:
<% excludedProps = Event.allEvents.toList() << 'id' << 'version'
allowedNames = domainClass.persistentProperties*.name << 'dateCreated' << 'lastUpdated'
使用:
<% excludedProps = Event.allEvents.toList() << 'id' << 'version'
excludedProps.addAll(domainClass.getClazz().excludedFromListViewProperties ?: [])
allowedNames = domainClass.persistentProperties*.name << 'dateCreated' << 'lastUpdated'
如果这对您不起作用,请告诉我。
答案 1 :(得分:0)
grails generate-all packageName.DomainClass
执行命令后,您可以根据需要简单地更改生成的控制器和视图。
答案 2 :(得分:0)
您可以查看Dynamic Scaffolding状态
此外,标准scaffold视图需要InstanceList形式的模型变量用于集合,而Instance用于单个实例。使用诸如“书籍”和“书籍”之类的属性很诱人,但这些属性不起作用。
因此,也许您可以通过仅返回所需字段的实例来覆盖脚手架操作。但您可能需要一种中间数据类型。这是一种探索方式
答案 3 :(得分:0)
Jarred的答案的略微改进版本,用于检查excludedFromListViewProperties属性的存在:
domainClass.getClazz().metaClass.properties.findAll{
if (it.name == "excludedFromListViewProperties"){
excludedProps.addAll(domainClass.getClazz().excludedFromListViewProperties ?: [])
}
}