Display a domain transient property in scaffolded views

廉价感情. 提交于 2019-12-01 03:31:57

问题


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


回答1:


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.



来源:https://stackoverflow.com/questions/6045164/display-a-domain-transient-property-in-scaffolded-views

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!