Как получить значение из сессионной области в радиогруппе для XPages - PullRequest
0 голосов
/ 02 ноября 2018

У нас есть приложение 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

1 Ответ

0 голосов
/ 05 ноября 2018

Это работает для меня:

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)
...