2011-01-25 11 views
5

EclipseからSpringの「Validate」を呼び出すと、Enumの暗黙的な「valueOf」メソッドを使用して列挙型に戻すときに、多くのエラーが発生します。例えばSpring、Bean、enumのvalueOf

非staticファクトリメソッド 'のvalueOf' 工場 Beanクラスでは見られない1つの引数とし...

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

は、Eclipseは私に言っています

私はドキュメントから理解しています:

はBeanWrapperImplはJDK 1.5列挙型 と古いスタイルの列挙クラスをサポートしています。文字列 値は、上記の右に動作するはずですので、列挙型の値として 名

に扱われるのですか? (btwは 'constructor-arg'であり、その場合は正しいタグであり、 'method-arg'であるべきではないでしょうか?)

Eclipse/Springの「検証」でエラーメッセージが表示されるのはなぜですか?

答えて

4

Enum.valueOf()は2つの引数を持っている:

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

望ま定義は次のようになります。

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

私は同意しますが、OPはjava.lang.Enum.valueOf()を使用しようとしていません。私はむしろ 'DocFamily.valueOf()'が呼び出されることを理解しています。 –

+1

@ Grzegorz Oledzki:DocFamilyは列挙型です – 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> 

をしかし、このようなものは、よりエレガントな解決策になることができます

私はこれを次のように使ってみました:

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

魅力的に機能しました。それはあなたのために働くのですか?