我有一些 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 风格的常量大写标准是愚蠢的吗?