代码之家  ›  专栏  ›  技术社区  ›  Malin

如何在xpages的radiogroup中从sessionscope中获取值

  •  0
  • Malin  · 技术社区  · 6 年前

    我们有一个xpages应用程序,它是在notes关键字文档的帮助下设置的。这些关键字通过sessionscope提供。范围变量的示例如下:

    名称范围:关键客户

    价值观:

    违约 值[是,否]

    对于使用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控件,我想读取scope变量并返回值项的值。

    我该怎么做?

    我试过的是:

    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 回复  |  直到 6 年前
        1
  •  1
  •   Tom Van Aken    6 年前

    这对我有效:

    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)