2011-01-25 21 views
5

Spring'in "Validate" öğesini Eclipse'den çağırırken Enum'un örtülü "valueOf" yöntemini kullanarak bir enum'u geri almak istiyorum.Spring, beans ve enum değeriOf

Örneğin

:

<bean id="docFamily" class="...DocFamily" factory-method="valueOf"> 
    <constructor-arg> 
     <value>LOGY</value> 
    </constructor-arg> 
</bean> 

Eclipse bana etti:

Olmayan statik fabrika yöntemi 'valueOf' ... fabrika fasulye sınıfında bulunmayan argümanlar 1 ile

Ancak bu belgeyi anladığım kadarıyla:

değerleri Yani yukarıda sağ çalışması gerektiğini enum değeri olarak isimleri

ele alınacaktır Dize: 210

BeanWrapperImpl JDK 1.5 Çeteleler ve eski tarz enum sınıflarını destekler? (btw bu durumda 'constructor-arg' doğru etikettir, 'method-arg' olması gerekmiyor mu?).

Eclipse/Spring'in "Doğrulama" neden bana bu hata mesajını veriyor?

public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) 

nedenle istenilen tanımı aşağıdaki gibi görünebilir:

<util:constant id = "docFamily" static-field = "...DocFamily.LOGY" /> 

cevap

4

Enum.valueOf()

iki argüman vardır

Sadece bunu şu şekilde kullanmayı denedim:

ve cazibe gibi çalıştı. Senin için çalışıyor mu?

+0

Katılıyorum ama OP java.lang.Enum.valueOf() 'yi kullanmaya çalışmaz. Ben daha çok çağrılmaya çalışılan DocFamily.valueOf() olduğunu anlıyorum. –

+1

@Grzegorz Oledzki: Ancak DocFamily bir Enum – Gugussee

0
:

<bean id="docFamily" class="java.lang.Enum" factory-method="valueOf"> 
    <constructor-arg index = "0"><value>...DocFamily</value></constructor-arg> 
    <constructor-arg index = "1"><value>LOGY</value></constructor-arg> 
</bean> 

Ancak böyle bir şey daha zarif bir çözüm olabilir