0

私はこれで Mule Studio を使用していますが、実際には「カスタム」文字列名でドロップダウン リストを追加する可能性を考えていました。このケースは、MIME タイプ (ContentTypes) 名に適用されます。(例: text/css、text/javascript など)

次のような構造を作成しました。

public enum HttpContentType {
        TEXT_PLAIN 
        {
            public String toString() {
                return "text/plain";
            }
        },
        TEXT_CSS
        {           
            public String toString() {
                return "text/css";
            }   
        },
        TEXT_JS
        {
            public String toString() {
                return "text/javascript";
            }   
        },
        TEXT_XML
        {
            public String toString() {
                return "text/xml";
            }   
        },
    };

次に、構成可能な属性として次のように使用します。

/**
     * Connection Content Types
     */
    @Configurable
    @Placement(order=1,group="Configuration",tab="HTTP Configuration")
    private HttpContentType contentType;

しかし、もちろん、Mule Studio からそれを読み取るとTEXT_CSS、 、TEXT_XMLTEXT_JAVASCRIPT( http://puu.sh/3vLbd.png ) などの名前のドロップダウン リストになり、 、の代わりtext/cssに.text/xmltext/javascript

どうすればこの結果を達成できますか?

4

3 に答える 3

3

これを達成するためのはるかに良い方法は、列挙型にフィールドを提供し、適切なコンストラクターを提供することです。

public enum HttpContentType {
    TEXT_PLAIN("text/plain"),
    TEXT_CSS("text/css");

    private String value;

    HttpContentType(String value) {
        this.value = value;
    }

    public String toString() {
        return this.value;
    } 

    public static HttpContentType getByValue(String value){
        for (final HttpContentType element : EnumSet.allOf(HttpContentType.class)) {
            if (element.toString().equals(value)) {
                return element;
            }
        }
        return null;
    }
}
于 2013-07-05T17:57:51.310 に答える
0
public enum HttpContentType {
TEXT_PLAIN("text/plain"), TEXT_CSS("text/css");

private String code;

HttpContentType(String code) {
    this.code = code;
}

public String toString() {
    return code;
}

public static HttpContentType getEnum(String code) {
    if (code.equals("text/plain")) {
        return TEXT_PLAIN;
    } else if (code.equals("text/css")) {
        return TEXT_CSS;
    } else {
        return null;
    }
}

}

于 2013-07-05T18:23:08.030 に答える
0

1 つのオプションは、MIME 文字列を取得する別の方法を提供することです。

public interface IMimeTypeProvider {
    public String toMimeType();
}

public enum HttpContentType implements IMimeTypeProvider {
    TEXT_PLAIN 
    {
        public String toMimeType() {
            return "text/plain";
        }
    },
    ...

    public String toMimeType() {
        return "text/plain";
    }
}

メソッドの追加を検討することもできますtoDisplayString()。単一のロケールであっても、列挙子名は必ずしも適切な表示名ではありません。

于 2013-07-05T17:58:10.913 に答える