user596350
user596350

Reputation:

Problem with GRAILS select - trying to insert a number for a field that appears as text in dropdown list

Here is the domain class I have defined:

package mypackage

public enum UFModeType { I(0), O(1), R(3)

Integer mode
public UserFileModeType(Integer mode) {
    this.mode = mode;
}
static list() {
    [I, O, R]
}

}

This is a property of another domain Parent where it is as follows:

package mypackage class Parent { String name ... ... ... UFModeType uFMode

static mapping = {
    table 'parent_table_with_ufMode_col_as_number'
    version false
    tablePerHierarchy false
    id generator:'sequence', params:[sequence:'myseq']
    columns {
        id column:'parentid'
        uFMode column: 'UFMODE'
    }
}

static constraints = {
    userFileMode(nullable: true)
}

}

The gsp call for this looks like this: g:select name="uFMode" from="${mypackage.UFModeType?.list()}" value="${parentInstance?.uFMode?.name()}" /

I have tried a lot of variants of the above in the gsp call but I am getting error that the db insert fails saying the entry of ufmode is invalid number, thus this is not being passed as a number. I printed the params in the controllers save and it shows this: Params in save=[uFMode:I ...

I am sure I may be missing some minor thing in syntax, but I have tried a lot of things without much success, so any inputs will be greatly appreciated.

Thanks!

Upvotes: 0

Views: 276

Answers (1)

Paul
Paul

Reputation: 2581

Try changing

value="${parentInstance?.uFMode?.name()} 

to

value="${parentInstance?.uFMode?.mode()}

From the definition of UFModeType you give you do not have a name attribute.

Upvotes: 0

Related Questions