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_XML, TEXT_JAVASCRIPT( http://puu.sh/3vLbd.png ) 等等而不是text/css, text/xml, text/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

一种选择是提供一种不同的方法来获取 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 回答
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 回答