我使用一個XPage一個Dojo過濾選擇控制,並想節省標籤和值的XPage保存時。我可以將這兩個值保存到相同或分開的字段嗎?的XPages - 道場過濾選擇 - 節省標籤和值
回答
你想文檔的字段設置爲當前選擇的值對應的標籤。
下面的代碼適用於定義的xp:selectItem
項目和基於屬性,視圖,bean或其他來源的各種計算xp:selectItems
定義。
服務器端JavaScript解決方案
添加以下SSJS代碼在onclick事件提交按鈕:
<xp:this.action><![CDATA[#{javascript:
var select = getComponent('djFilteringSelect1');
var list = select.getChildren();
var value = select.getValue();
var label = "";
for (var i = 0; i < list.length && label === ""; i++) {
print (i);
if (typeof list[i] === 'com.ibm.xsp.component.UISelectItemEx') {
if (list[i].getItemValue() === value) {
label = list[i].getItemLabel();
}
} else if (typeof list[i] === 'com.ibm.xsp.component.UISelectItemsEx') {
items = list[i].getValue();
for (var k = 0; k < items.length && label === ""; k++) {
if (items[k].getValue() === value) {
label = items[k].getLabel();
}
}
}
}
document1.setValue("label", label)
}]]></xp:this.action>
它貫穿所有定義的Dojo過濾選擇控制selectItems
,查找選定值並將相應的標籤寫入文檔的「標籤」字段。
客戶端的JavaScript解決方案
創建連接到文檔的領域 「標籤」 隱藏的輸入字段:
:<span style="display:none">
<xp:inputText
id="fieldLabel"
value="#{document1.label}">
</xp:inputText>
</span>
添加以下CSJS代碼在onclick事件提交按鈕
<xp:this.script><![CDATA[XSP.getElementById("#{id:fieldLabel}").value =
dijit.byId('#{id:djFilteringSelect1}').get('displayedValue')]]>
</xp:this.script>
它將輸入字段設置爲當前所選值的標籤,然後將其寫入文檔ent的領域「標籤」。
我使用Java bean來保存這種類型的信息。這將使以後翻譯頁面變得更容易。因此,我有不同的選項靜態地圖的定義:
private static final Map<String, String> userInterestLabels;
static {
userInterestLabels = new HashMap<String, String>();
userInterestLabels.put("1", "Environment");
userInterestLabels.put("2", "Sience");
userInterestLabels.put("3", "Regulations");
userInterestLabels.put("4", "Generel interest");
}
然後我不得不返回選擇項目的字段列表的方法:
public List<SelectItem> getListUserInterests() {
List<SelectItem> selectItems = new ArrayList<SelectItem>();
for (Map.Entry<String, String> item : userInterestLabels.entrySet()) {
selectItems.add(new SelectItem(item.getKey(), item.getValue()));
}
return selectItems;
}
在我的XPage我指的是這種方法使用表達式語言(無需SSJS):
<xe:djFilteringSelect id="inputRoleInterest" value="#{User.interest}"
disableValidators="true" hasDownArrow="true" immediate="true">
<xp:selectItems>
<xp:this.value><![CDATA[#{User.listUserInterests}]]></xp:this.value>
</xp:selectItems>
現在,當你提交這個頁面的User bean有一個方法「setInterest()」,它通過綁定#{User.interest}調用。在該方法中,您可以根據從該字段返回的值獲取標籤。我有這樣的方法:
public String getUserInterestLabel(String interest) {
String label = userInterestLabels.get(interest);
return (null == label) ? "" : label;
}
返回從被用來生產你選擇的項目在同一個地圖上的標籤。現在,您可以保存標籤,在另一個領域 - 或者任何你想用它做;-)
public void setInterest(String interest) {
this.interest = interest;
this.interestLabel = getUserInterestLabel(interest);
}
/約翰
謝謝,我會用下面的SSJS解決方案,因爲我覺得它更直接。 –
- 1. jQuery的現場過濾器和標籤
- 2. 道場,過濾選擇,查詢和排除字符串
- 3. 道場/ Dijit的:無法獲取過濾選擇工作
- 4. XML選擇單節點如何過濾標籤?
- 5. yadcf過濾器內選擇標籤列
- 6. 如何通過選擇在道場
- 7. PHP節省多選擇標籤的文本文件
- 8. 道場過濾選擇正則表達式查詢
- 9. XPages主題和道場屬性
- 10. 道場JSON選擇
- 11. 的Dijit /道場內嵌 - 濾波選擇 - 數據存儲
- 12. Rspec標籤和過濾器 - 過濾器的多個值?
- 13. 過濾器在其他領域ForeignKeyFeild在現場選擇的值
- 14. Jquery過濾器按屬性選項標籤選擇選項
- 15. WordPress的:通過選擇標籤/類別過濾帖子
- 16. 道場1.8:選擇時的價值指標
- 17. 選擇/過濾箱
- 18. 可點擊道場標籤
- 19. 選擇節點時省略子節點
- 20. 的XPages - 道場值選取器[多選題,其他數據庫,搜索功能]
- 21. xpages dojo過濾器選擇部分更新on更改
- 22. 道場TabContainer的標題(標籤)
- 23. Lodash過濾器和省略
- 24. 通過道場/ Dijit的/ SpringJS忽略選擇的屬性
- 25. 的XPages - 節能項目(場)的文件
- 26. 用於選擇過濾節點中的特定值的XSLT
- 27. GtkTreeView過濾和選擇
- 28. 過濾NG-選項選擇
- 29. Django truncatewords過濾器標籤,帶省略號的href鏈接
- 30. 註銷/刪除div標籤的所有子節點在道場
我剛試過,但得到錯誤腳本解釋器錯誤,行= 29,在Java類'com.ibm.xsp.component.UISelectItemsEx'中的行if(list [i] .getItemValue()=== select.getValue()){ –
我擴展了我的默認成員'getItemValue' SSJS代碼,並添加了一個簡單的CSJS解決方案 - 希望一種解決方案將爲您工作。 –
非常感謝。我只是測試了SSJS解決方案,它完美的工作! –