У меня были проблемы с попыткой получить значения из treeMap, которые содержались в течение некоторого времени. Я пробовал несколько различных методов доступа к данным, но самое далекое, что я получил, было для JSP, чтобы признать, что хэш или карта дерева, но фактически не перебирать его и не возвращать данные.
Я пытался найти лучший способ сортировки результатов xml на основе атрибута тега. Итак, я беру xml и помещаю значения каждого в bean-компонент, затем беру и помещаю bean-компоненты в древовидную карту, где Key = SortId. Поскольку treema автоматически сортирует, результатом является отсортированная карта значений XML. Население bean-компонента и treeMap отлично работает, проблема заключается в том, чтобы просто вытащить эти значения в JSP.
Что ж, возможно, лучшая иллюстрация моей получившейся карты поможет, по крайней мере, понять, что я пытаюсь понять. Цель состоит в том, чтобы пройтись по недавно упорядоченному списку и заполнить мои div чем-то вроде
<div>
Name: ${tileName} <br />
Description: ${tileDescrip} <br />
<img scr="${imagePath}">
</div>
результирующая карта дерева выглядит так
отсортированный хэш
{0, bean(tileName,tiledescrip,imagePath)}
{1, bean(tileName,tiledescrip,imagePath)}
{2, bean(tileName,tiledescrip,imagePath)}
Моя проблема в том, что с приведенным выше кодом я не получаю никаких значений, возвращаемых даже из итерации первого уровня карты, даже если вывод самой карты показывает ее там в
sortedHash = CTTeamsiteXMLHash@135b24b
так что псевдопоток того, что я делаю
Read XML
- Iterate
-Parse XML Values to bean
-Place bean in Treemap<SortId, XML-Bean>
-Return TreeMap
-Loop through treemap and then pull each bean value out.
Вот пример XML
<teaser>
<sort>1</sort>
<value1></value1>
<value2></value2>
</teaser>
Мой компонент
public class CTTeamsiteXMLHash {
private HashMap<String, Object> xmlHash;
private TreeMap<String, Object> sortedHash;
public TreeMap<String, Object> getSortedHash() {
return sortedHash;
}
public void setSortedHash(TreeMap<String, Object> sortedHash) {
this.sortedHash = sortedHash;
}
public void setXmlHash(String sortOrder, CTTeamsiteXMLBean bean) {
getXmlHash().put(sortOrder, bean);
}
public HashMap<String, Object> getXmlHash() {
return xmlHash;
}
Вот моя неудачная попытка доступа из JSP. если это поможет, я также передаю sortedHash в запросе
<jsp:useBean id="sortedHash" class="CTTeamsiteXMLHash"
scope="request"/>
<c:forEach items="${sortedHash.sortedHash}"
var="eachItem">
<c:forEach items="${eachItem.value}"
var="anItem">
<c:out value="${anItem.tileName.value}" /> :
<c:out
value="${anItem.tileDescrip.value}" />
</c:forEach>
</c:forEach>
for
и так далее. Таким образом, его легче перевести в подход JSTL. - person BalusC   schedule 13.12.2010