0

我有一些 jxpath,我想将它们放在一个枚举中,我将使用一个映射与 JSF 页面共享,该映射将使 EL 可以使用它们作为 jxpath 执行 createPathAndSetValue 的键。

然后我可以轻松地填写模型,而无需创建大量的 getter 和 setter。像这样:

<h:inputText value="#{backingBeanMap[backingBeanMap.billingAddress_postalCode]}" />

我有这样的东西

public enum MWField {
    isGiftJoin,
    billingAddress_postalCode,
    ...
    associates$3_memberInfo_membershipType_type;

    public final String xpath;

    MWField(){
        this.xpath = name().replace('_', '/').replace("$0", "[0]")
        .replace("$1", "[1]").replace("$2", "[2]")
        .replace("$3", "[3]").replace("$4", "[4]")
        .replace("$5", "[5]").replace("$6", "[6]")
        .replace("$7", "[7]").replace("$6", "[6]")
        .replace("$9", "[9]").replace("$10", "[10]");
    }
}

我使用名称 isGiftJoin 或 billingAddress_postalCode 而不是大写名称,并在构造函数中将 _ 替换为 / (因此 xpath 属性是实际的 xpath)。只要所有属性的名称中都没有 _(它们没有),我就完成了。枚举不会是“大写”,但枚举并不是真正的常量,因为 RED 是一个常量。在这里,它们是指向数据的类的实例,并且不打算以这种方式“恒定”。

这些名称是否太奇怪和不标准?被链接到 C 风格的常量大写标准是愚蠢的吗?

4

1 回答 1

1

您是在问是否可以随意命名枚举?

当然; 为什么不?使用适合您的标准。就个人而言,我只为静态决赛保留所有大写字母,并且倾向于为枚举值使用类命名约定。

不是名称中下划线的忠实拥护者,但是在您的情况下,由于您故意创建了层次结构,因此我对此没有太大的问题。

知道命名路径是否真的需要枚举:您是否需要在 switch 语句中使用它们(在 JDK 6 或更低版本中)?是否有理由将它们表示为字符串以外的任何东西?没有路径的名字有价值吗?

于 2013-01-24T20:28:09.937 回答