我有一些jxpath我想将它们放在一个枚举中我将与一个JSF页面共享一个映射,这个映射将使它们可用于EL,作为jxpath的键来执行createPathAndSetValue。jxpath的Java枚举
然后我可以很容易地填写一个模型,而不需要创建大量的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风格不变的大写标准是愚蠢的吗?
JSF和java需要同步,并且正确获取xpaths可能会非常棘手,因此我将使用junit测试来检查元素是否被正确引用。这样我可以回收其他支持bean的xpath。我可以让他们在其他类中的字符串,但id jave有字符串SOME_JXPATH =“some/jxPath”,这似乎愚蠢和容易出错,当我只能输入名称/路径一次。 – ggb667
是不是一个枚举实际上是一个枚举类的公共静态最终实例? –
是的,这些名字实际上很有价值,而且这个解决方案的确做得相当好。 – ggb667