2010-10-26 5 views
5

Grails Webflow eklentisini kullanıyorum. İşte ile çalışıyorum alanı nesnelerdir:Bir doğrulama hatası nasıl yapılır?

class Foo implements Serializable { 
    String fooProp1, 
      fooProp2 

    static constraints = { 
     fooProp2 nullable: false 
    } 
} 

class Bar implements Serializable { 
    Foo fooObject 

    static constraints = { 
     fooObject nullable: false 
    } 
} 

WebFlow bir noktada, fooObject.fooProp1 boş olmadığından emin olmak gerekir. Öyleyse, bir hata atmak ve kullanıcıyı bir değer ile tedarik etmeye zorlamak istiyorum. Bunu yapmak için validate() kullanmayı denedim (hem Bar hem de Foo nesneleri üzerinde), ancak fooProp1 null değerine sahip olduğundan, true özelliği geçerliliği geçer. Herhangi bir fikir?

+0

Biraz kafam karıştı - eğer durum buysa, özellik sadece “nullable: false” olmamalı mı? Kısıtlamayı neden alan adınıza ekleyemediğinizi açıklayabilir misiniz? Bu benim için en bariz çözüm, sanırım. –

+0

Eh, Foo nesneleri belirtilen fooProp1 olmadan veritabanında bulunmasına izin verilir. Ancak, web akışı sırasında, bu özellik web akış işleminin sonunda kullanıldığı için boş olmamalıdır. – Pat

cevap

10

Muhtemelen aşağıdaki kodu uyarlayarak Web Akışı'nda yapabilirsiniz:

if(fooObject.fooProp1 == null) { 
    fooObject.errors.rejectValue('fooProp1', 'nullable') 
} 

o yönteme 'nullable' ikinci argüman, durumunuza için farklı olabilir. İstediğiniz hata mesajını görüntülemek için sadece mesaj koduna (message.properties) ayarlamanız gerekir.

reject() ve rejectValue()'u kullanmanın daha fazla yolu için here'a bakın.

+0

Teşekkürler, aradığım şey buydu. – Pat

+0

Evet, sorun değil. –