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