Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Grails g:select no selection

Tags:

enums

grails

gsp

I have the following combobox:

<g:select name="ticketType" from="${app.domain.enums.TicketType?.values()}"
                              keys="${app.domain.enums.TicketType.values() }"
                              value="${ticketInstance?.ticketType}"
                              noSelection="${['null': 'Select One...']}"
                    />

I've setup the following constraint for ticketType in command object

ticketType nullable: true, blank:true

TicketType is a very simple enum:

    public enum TicketType {
        QUESTION, SUPPORT, MAINTENANCE, NEW_FUNCTIONALITY, MALFUNCTION
}

And every time I don't setup some value for ticketType in my GSP I get the following error:

Failed to convert property value of type 'java.lang.String' to required type 'com.coming.enums.TicketPriority'

It's like in case of no selection g:select sets the value for "null" (string).

What am I missing?

like image 984
drago Avatar asked Jul 26 '12 12:07

drago


2 Answers

Rather than using the 'null' literal, have you tried using an empty string as your noSelection attribute? e.g. noSelection="${['':'Select One...']}"? This may do a proper conversion to a true null value during data binding.

like image 91
Aquatoad Avatar answered Nov 08 '22 08:11

Aquatoad


As your error says - you do have a string in your noSelection. This can't be converted to any of your enum values.

Remove the quotation marks of your null and it should work (it works for me with grails 2.0):

<g:select name="ticketType" from="${app.domain.enums.TicketType?.values()}"
                          keys="${app.domain.enums.TicketType.values() }"
                          value="${ticketInstance?.ticketType}"
                          noSelection="${[null: 'Select One...']}"/>
like image 34
aiolos Avatar answered Nov 08 '22 08:11

aiolos