В пользовательском элементе управления я использую HashMap (загруженный в событие beforePageLoad для cc) для передачи данных во вложенный повторяющийся элемент управления, но я не могу понять, как получить конкретное значение из карты.(Я давний разработчик Notes, но нуби из Xpages / Java.)
Я имитирую категоризированное представление Notes, но мне нужно использовать производные данные, а не представление.Формат данных (все строки):
key data
--- ----
category1 name1^nextDueDate1^lastCompletedDate1
category2 name2^nextDueDate2^lastCompletedDate2
category3 name3^nextDueDate3^lastCompletedDate3
Я передаю категории отдельно в виде простого массива во внешний повтор через viewScope.categoryArray , и я передаю карту в viewScope.catDataMap .Кнопка во внешнем повторении отображает / скрывает подпанель, содержащую вложенный повтор.Для тестирования я пытаюсь отобразить соответствующую строку данных (например, name1 ^ nextDueDate1 ^ lastCompletedDate1) в самом последнем вычисляемом текстовом поле (id = showValue) на основе категории (например, category1):
<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 , в котором говорится, что вы должны использовать map.entrySet () .Однако я просмотрел документацию по Java как для HashMap , так и Set и просто не могу понять, какой метод использовать.Все, что я хочу, это эквивалент LS
Dim catData as String
catData = catDataMap("category1")
print catData 'name1^nextDueDate1^lastCompletedDate1
Может кто-нибудь указать мне правильное направление или предложить альтернативное решение?(Могу ли я сделать это более просто в Javascript?)