2012-07-26 20 views
6

Ho la seguente casella combinata:Grails g: selezionare nessuna selezione

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

Ho installato il seguente vincolo per ticketType in oggetto comando

ticketType nullable: true, blank:true 

TicketType è molto semplice enum:

E ogni volta che non installo alcun valore per ticketType nel mio SPG, ottengo il seguente errore:

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

È come in caso di nessuna selezione g: select imposta il valore per "null" (stringa).

Cosa mi manca?

+0

Si prega di mostrare il codice del tuo 'g: select' ... – aiolos

+0

@aiolos Spiacenti, si è verificato un errore nella formattazione. Ho modificato il mio post. – drago

risposta

14

Invece di utilizzare il 'nulla' letterale, avete provato a usare una stringa vuota come il tuo attributo noSelection? per esempio. noSelection="${['':'Select One...']}"? Questo può fare una corretta conversione a un valore nullo vero durante l'associazione dei dati.

+0

Ecco come faccio di solito ma non ha funzionato. Quindi ho giocato con diverse opzioni. Nel frattempo ho cambiato codice in controller e servizi e restituisco noSelection a noSelection = "$ {['': 'Seleziona uno ...']}" e ora funziona. Gremlins :) – drago

2

Come dice il tuo errore - hai una stringa nel tuo noSelection. Questo non può essere convertito in nessuno dei tuoi valori enum.

rimuovere le virgolette del vostro null e dovrebbe funzionare (per me funziona con 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...']}"/> 
+0

L'ho già provato e non funziona ancora. Altre idee? – drago

+0

g: select finisce per produrre HTML, quindi non fa alcuna differenza le quotazioni intorno a null, dal momento che produrrà valore = "null" comunque ... – Deigote