如何从XPages的radiogroup中的会话范围中获取值



我们有一个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

这对我有效:

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)

最新更新