2016-04-09 33 views
6

ben bir varlık var.KOTLIN ve @Valid Bahar açıklama

class SomeInfo() { 

    constructor(value: String) { 
      this.value = value 
     } 

     @NotNull @Pattern(regexp = Constraints.EMAIL_REGEX) 
     lateinit var value: String 

     var id: Long? = null 
    } 

Herhangi iyi bir uygulama daha az ağız yapmak:

O İlkbahar böyle bir varsayılan parametresiz yapıcı ve fantezi kodu yukarıdaki çirkin (ama çalışma) bir şey olur ihtiyacı görünüyor?

Teşekkürler.

+0

Spring'in parametresiz bir kurucuya gereksinim duyduğunu ama çalışma kodunun hala tek bir parametre yapıcısı olduğunu söylüyorsunuz. – Michael

+0

Evet, haklısınız. Düzenlenen. – user2138356

cevap

17

Spring'in bir tarlaya uygulanacak ek açıklamalara ihtiyacı var gibi görünüyor. Ancak Kotlin bu ek açıklamaları yapıcı parametresine uygular. Bir alana uygulanmasını sağlamak için bir ek açıklama uygularken field: belirtecini kullanın. Aşağıdaki kod sizin için iyi çalışmalıdır.

class SomeInfo(
    @field:NotNull 
    @field:Pattern(regexp = Constraints.EMAIL_REGEX) 
    var value: String 
) { 
    var id: Long? = null 
} 
+0

Merakla, nasıl ortaya çıktın? Ortaya çıkan veri modeli üzerinde yansıma? – Scott

3

Michal'in cevabına bir alternatif olarak, alıcıya açıklama eklenmesi de işe yarar. ya @field: yapıcı parametre açıklama edecek

class SomeInfo(
    @get:NotNull 
    @get:Pattern(regexp = Constraints.EMAIL_REGEX) 
    var value: String 
) { 
    var id: Long? = null 
} 

can sıkıcı kısmı @get kullanmıyor olmasıdır. Bu hala geçerli kotlin kodudur (bu yüzden bir hata alamazsınız). Bu kullanım durumlarda sadece işe yaramaz.

+0

Denedim ve işe yaramadı. Biraz fazla konfigürasyona ihtiyacım var mı yoksa işe yarıyor mu? – ttt

+0

Hayır, kutudan çıkmalı. Ben bir bahar projesinde kullanıyorum, bu yüzden bahar sınıfları otomatik olarak "açık" ve "açık yöntemler" olacak şekilde bahar sınıflarını değiştiren ilkbahar-kotlin paketine sahibim. Başlayan bir site etkisi olabilir. –