6

次の行を含む構成ファイルがあります。

login.mode=PASSWORD

および列挙型

public enum LoginMode {
PASSWORD, NOT_PASSWORD, OTHER }

そして春の豆

<bean id="environment" class="a.b.c.Environment" init-method="init">
  <property name="loginMode" value="${login.mode}"/>
</bean>

そしてもちろんBeanクラス

public class Environment {
    private LoginMode loginMode;

    public LoginMode getLoginMode() {
        return loginMode;
    }

    public void setLoginMode(LoginMode loginMode) {
        this.loginMode = loginMode;
    }
}

構成ファイル (文字列) のプロパティを対応する LoginMode の列挙値に変換するにはどうすればよいですか?

編集:文字列入力の列挙値を取得する方法は知っていますが、問題は別のものです:これを試してみると:

public class Environment {
    private LoginMode loginMode;

    public LoginMode getLoginMode() {
        return loginMode;
    }

    public void setLoginMode(String loginMode) {
        this.loginMode = LoginMode.valueOf(loginMode);
    }
}

spring は、getter と setter が同じ入力と出力の型を持っていないことについて不平を言っています。

Bean property 'loginMode' is not writable or has an invalid setter method. Does the    parameter type of the setter match the return type of the getter?
4

3 に答える 3

16

Spring は、入力文字列を目的の列挙型の対応する valueOf に自動的に変換します。

于 2013-10-30T10:14:26.630 に答える
3

あなたはそれを行うことができます

LoginMode.valueOf("someString");
于 2013-10-30T09:41:57.250 に答える
2
 LoginMode.valueOf(valueOfProperty);

編集: コンバーターを使用してみてください http://docs.spring.io/spring/docs/3.0.0.RC2/reference/html/ch05s05.html http://forum.spring.io/forum/spring-projects/web/ 83191-custom-enum-string-converters

EDIT2:これも確認してください: BeanのプロパティにSpring構成ファイルのEnum値を割り当てる方法は?

于 2013-10-30T09:42:37.780 に答える