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

发布于 2024-11-08 16:19:58 字数 780 浏览 0 评论 0原文

在我的 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
}

}

我正在使用脚手架进行相应的创建/编辑操作。

我的问题是,即使我标记了要显示的密码确认约束,它也不会显示在脚手架视图中。我是否缺少某些东西来显示瞬态属性?是否可以?

谢谢

In my Grails 1.3.7 project I have a domain class like this:

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
}

}

And I'm using scaffold for the corresponding create/edit actions.

My problem is that even if I marked passwordConfirmation constraint to be displayed, it isn't shown at the scaffold views. Is there something that I'm missing to make transient properties to be displayed? Is it possible?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最丧也最甜 2024-11-15 16:19:58

默认情况下,grails 不会在视图中为瞬态属性创建字段。您可以在每个视图上手动添加它们,或者如果您有很多视图并且正在使用脚手架视图,您可以执行以下操作:

安装视图模板:

grails InstallTemplates

然后在 src/templates/scaffolding 中打开相关模板

并修改读取的行:

persistentPropNames = domainClass.persistentProperties*.name

对于

persistentPropNames = domainClass.properties*.name

每个模板。这有点麻烦,但它应该可以工作,您可以进一步编辑模板以包含/排除您喜欢的任何属性。

By default grails doesn't create the fields in views for transient properties. You could manually add them on each view or if you have a lot of them and are using the scaffolded views you could do the following:

Install the view templates:

grails InstallTemplates

Then open the relevant templates in src/templates/scaffolding

and modify the line that reads:

persistentPropNames = domainClass.persistentProperties*.name

to

persistentPropNames = domainClass.properties*.name

for each of the templates. This is a bit of a bodge, but it should work and you can further edit the template to include/exclude any properties you like.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文