在脚手架视图中显示域瞬态属性

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 属性

MVC 3 - 脚手架下拉列表

从 t4 脚手架模板访问我的模型中的元数据(数据注释)

Cakephp 中的脚手架允许选择 Parent_id,但烘焙控制器显示一个空的选择框

如何在 Rider IDE 中进行 ASP.NET MVC 视图脚手架?

在 .NET CORE 3.1 应用程序中访问使用脚手架生成的视图时出错