在脚手架视图中显示域瞬态属性
Posted
技术标签:
【中文标题】在脚手架视图中显示域瞬态属性【英文标题】:Display a domain transient property in scaffolded views 【发布时间】:2011-08-28 01:25:44 【问题描述】:在我的 Grails 1.3.7 项目中,我有一个这样的域类:
class User
String login
String password
String name
String passwordConfirmation
static constraints =
login unique:true, blank:false, maxSize:45
password password:true, blank:false, size:8..45,
matches: /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*/
name blank:false, maxSize:45
passwordConfirmation display:true, password:true, validator: val, obj ->
if (!obj.properties['password'].equals(val))
return ['password.mismatch']
static transients = ['passwordConfirmation']
String toString()
name
我正在使用脚手架进行相应的创建/编辑操作。
我的问题是,即使我标记了要显示的密码确认约束,它也不会显示在脚手架视图中。我是否缺少一些东西来显示瞬态属性?有可能吗?
谢谢
【问题讨论】:
【参考方案1】:默认情况下,grails 不会在视图中为瞬态属性创建字段。您可以在每个视图上手动添加它们,或者如果您有很多并且正在使用脚手架视图,您可以执行以下操作:
安装视图模板:
grails InstallTemplates
然后打开src/templates/scaffolding中的相关模板
并修改以下内容:
persistentPropNames = domainClass.persistentProperties*.name
到
persistentPropNames = domainClass.properties*.name
对于每个模板。这有点麻烦,但它应该可以工作,您可以进一步编辑模板以包含/排除您喜欢的任何属性。
【讨论】:
应该有更简单的方法来实现这一点,但目前似乎是唯一的方法。谢谢以上是关于在脚手架视图中显示域瞬态属性的主要内容,如果未能解决你的问题,请参考以下文章
Asp.Net MVC 从模型创建视图脚手架不生成 int 属性
Cakephp 中的脚手架允许选择 Parent_id,但烘焙控制器显示一个空的选择框