在自定义控件上,我正在使用HashMap(在cc的beforePageLoad事件中加载)将数据传递到嵌套的重复控件,但我无法弄清楚如何从地图中获取特定值。 (我是一个长期的Notes开发者,但是一个Xpages / Java noobie。)
我正在模拟Notes分类视图,但我必须使用派生数据,而不是视图。数据的格式是(所有字符串):
data
我通过 viewScope.categoryArray 将类别作为简单数组分别传递给外部重复,然后在 viewScope.catDataMap 中传递地图。外部重复内的按钮显示/隐藏包含嵌套重复的子面板。为了测试,我试图根据类别(例如,category1)在最后计算的文本字段(id = showValue)中显示相应的数据字符串(例如,name1 ^ nextDueDate1 ^ lastCompletedDate1):
key data
--- ----
category1 name1^nextDueDate1^lastCompletedDate1
category2 name2^nextDueDate2^lastCompletedDate2
category3 name3^nextDueDate3^lastCompletedDate3
(请注意,我在我的示例中省略了一些额外的东西,比如当隐藏panelData等时)。在通过尝试直接访问 map 而无法获取数据后,我发现了post表示您必须使用 map.entrySet()。但是,我浏览了HashMap和Set的Java文档,但无法弄清楚要使用的方法。我想要的只是LS的等价物
<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>
有人可以指出我正确的方向或提出替代解决方案吗? (我可以在Javascript中更简单地执行此操作吗?)
答案 0 :(得分:1)
看起来你正在为嵌套的重复控件中的值返回错误的东西。而不是return map.entrySet();
你应该使用return map.get(category);
,它应该返回你可以解析的值字符串。