在嵌套重复控件中使用 HashMap 根据键获取值

Get value based on key using HashMap in nested repeat controls

在自定义控件上,我使用 HashMap(在 cc 的 beforePageLoad 事件中加载)将数据传递到嵌套的重复控件中,但我不知道如何从映射中获取特定值。 (我是一个长期的 Notes 开发者,但是 Xpages/Java 菜鸟。)

我正在模拟 Notes 分类视图,但我必须使用派生数据,而不是视图。数据格式为(所有字符串):

key         data
---         ----
category1   name1^nextDueDate1^lastCompletedDate1
category2   name2^nextDueDate2^lastCompletedDate2
category3   name3^nextDueDate3^lastCompletedDate3

我通过 viewScope.categoryArray 将类别作为简单数组分别传递给外部重复,并在 viewScope.catDataMap 中传递地图。外部重复内的按钮 displays/hides 包含嵌套重复的子面板。为了进行测试,我尝试根据类别(例如,category1)在最后一个计算的文本字段(id=showValue)中显示相应的数据字符串(例如,name1^nextDueDate1^lastCompletedDate1):

<xp:panel id="panelRepeat">
  <xp:repeat id="repeatCategory" value="#{viewScope.categoryArray}" var="category">
    <xp:button value="#{javascript:category}">
      <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="panelRepeat">
        <xp:this.action><![CDATA[#{javascript:viewScope.categoryDisplay = category}]]></xp:this.action>
      </xp:eventHandler>
    </xp:button>

    <xp:panel id="panelData" rendered="#{javascript:@IsMember(category, viewScope.categoryDisplay)}">
      <xp:repeat id="repeatDocData" var="catData">
        <xp:this.value>
          <![CDATA[#{javascript:var map:java.util.HashMap = viewScope.catDataMap;
            return map.entrySet()}]]>
        </xp:this.value>

        <xp:text id="showValue" escape="true" value="#{javascript:catData.???????}" />

      </xp:repeat>
    </xp:panel>

  </xp:repeat>
</xp:panel>

(请注意,我在我的示例中遗漏了一堆额外的东西,例如何时隐藏 panelData 等)在尝试访问 map 获取数据失败后直接,我找到了一个 post that said you have to use map.entrySet() instead. However, I looked through the Java documentation for both HashMap and Set 并且无法弄清楚该使用什么方法。我想要的只是

的 LS 等价物
Dim catData as String
catData = catDataMap("category1")
print catData    'name1^nextDueDate1^lastCompletedDate1

有人可以指出正确的方向或提出替代解决方案吗? (我可以在 Javascript 中更简单地做到这一点吗?)

看起来您 return 为嵌套重复控件中的值输入了错误的内容。而不是 return map.entrySet(); 你应该使用 return map.get(category); 应该 return 然后你可以解析的值的字符串。