2012-07-26 21 views
6

Aşağıdaki combobox var:Grails g: hayır seçimi seçmek

: Ben kurulum ettik

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

TicketType çok basit bir enum olan

ticketType nullable: true, blank:true 

komut nesnesi ticketType için aşağıdaki kısıt

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

Ve her defasında GSP'imde ticketType için bir değer ayarlamadığımda şu hatayı alıyorum:

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

Seçimden çıkma durumunda olduğu gibi g: select "null" (string) değerini ayarlar.

Neyi eksik?

+0

Lütfen 'g: select 'kodunuzu gösteriniz ... – aiolos

+0

@aiolos Üzgünüz - Biçimlendirmede bazı hatalar oluştu. Gönderiyi düzenledim. – drago

cevap

14

Aksine 'sıfır' literal kullanmak yerine, olarak boş bir dize kullanarak denedin senin noSelection özelliği? Örneğin. noSelection="${['':'Select One...']}"? Bu, veri bağlama sırasında gerçek bir boş değere uygun bir dönüşüm yapabilir.

+0

Ben genellikle böyle yaparım ama işe yaramadı. Böylece farklı seçeneklerle oynadım. Bu arada kontrol ve servislerde bazı kodları değiştirdim ve noSelection'a noSelection = "$ {['': 'Birini Seç ...']}" 'e döndürdüm ve şimdi çalışıyor. Gremlinler :) – drago

2

Hatanız söylendiği gibi - noSelection içinde bir diziniz var. Bu, enum değerlerinizden birine dönüştürülemez.

sizin null ait tırnak işareti kaldırın ve bunun (bu grails 2.0 ile benim için çalışıyor) çalışması gerekir:

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

Bunu zaten denedim ve hala çalışmıyor. Başka fikirlerin var mı? – drago

+0

g: HTML oluşturmayı sonlandırır, bu nedenle null civarında teklifler arasında herhangi bir fark yaratmaz, çünkü neyse = "null" değeri üretecektir ... – Deigote