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

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

<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样式常量UPPERCASE标准是否愚蠢?

最佳答案

您是否在问是否可以随便命名一个枚举?

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

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

我想知道是否确实需要枚举来命名路径:您是否需要在switch语句中使用它们(在JDK 6或更低版本中)?除了字符串以外,是否有理由将它们表示为其他内容?没有路径的名称有价值吗?

10-07 13:25