简体   繁体   中英

Grails g:select no selection

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?

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

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...']}"/>

Under Rails 3.3.x, no variation of providing the "null" value worked. In the end, I resolved it by adding this line in to the controller+action before doing any use of the params:

// convert "null" strings to REAL nulls
params.account.each { it.value = (it.value == 'null' ? null : it.value) }

After that, the following worked fine:

account.properties = params.account

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM