我有一些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