【发布时间】:2010-12-13 01:17:29
【问题描述】:
我在尝试从包含一段时间的 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>
【问题讨论】:
-
功能需求不明确,代码不是真正的自我记录,失败尝试的例子对理解需求没有多大帮助。我建议编辑您的问题以更详细地描述功能要求和/或在伪代码或普通 Java 代码中添加一个示例,您希望使用
for循环等来迭代地图。这样就更容易将其转化为 JSTL 方法。 -
对不起,我忘记了,过去 2 天里,每个人都没有看到我看到的同样的东西。我已经更新了我的描述,希望它能对我正在尝试做的事情有所启发