我们有一个XPages应用程序,该应用程序是在Notes关键字文档的帮助下设置的。这些关键字可通过sessionScopes使用。范围变量的一个示例是:
名称范围:key_customer_sv
值:
默认 值[是,否]
对于这些值,我使用LinkedHashSet来保证插入顺序:
var values:java.util.LinkedHashSet = new java.util.LinkedHashSet();
var iterator = keyValues.iterator();
while (iterator.hasNext()) {
var itemvalue = iterator.next();
values.add(itemvalue);
}
map.put("values",values);
这些值以HashMap的形式存储,并且对名称是默认值和值。
对于我的xp:radioGroup控件,我想读取范围变量并返回值条目的值。
我该怎么做?
这是我尝试过的:
var language = "_" + context.getLocaleString();
var languageDefault = "_" + "sv";
var key = "customer";
var values;
try{
values = sessionScope.get("key_" + key + language )['values'];
}catch(e){
print(e);
}
if (null == values){
values = sessionScope.get("key_" + key + language Default)['values'];
}
return values
答案 0 :(得分:1)
这对我有用:
var language = "_" + context.getLocaleString();
var languageDefault = "_" + "sv";
var key = "customer";
var values;
try{
values = sessionScope.get("key_" + key + language ).get('values');
}catch(e){
print(e);
}
if (null == values){
values = sessionScope.get("key_" + key + languageDefault).get('values');
}
return values==null?"":values.toArray();
通过使用.get('values')而不是['values']获取值很重要,因为它返回的内容有所不同。
我通过用以下代码填充sessionScope来进行测试:
var key_customer_sv:java.util.HashMap = new java.util.HashMap();
var values:java.util.LinkedHashSet = new java.util.LinkedHashSet();
values.add("Yes");
values.add("No");
key_customer_sv.put("values",values);
key_customer_sv.put("default", "Yes");
sessionScope.put("key_customer_sv", key_customer_sv)