gpt4 book ai didi

java - 问题在 JSP 中从 的 TreeMap 检索值

转载 作者:行者123 更新时间:2023-12-01 15:58:48 27 4
gpt4 key购买 nike

我在尝试从包含一段时间的 treeMap 中检索值时遇到了问题。我尝试了几种不同的访问数据的方法,但我所得到的最远的是 JSP 承认存在哈希或 TreeMap ,但实际上并没有迭代它并返回数据。

我一直在尝试找到基于标签属性对 xml 结果进行基本排序的最佳方法。因此,我获取 xml 并将每个值放入一个 bean 中,然后获取并将这些 bean 放入树状图中,其中 Key=SortId。由于treema 自动排序,结果是XML 值的排序映射。 bean 和 treeMap 的填充工作正常,问题只是将这些值提取到 JSP 中

也许更好地说明我生成的 map 将至少有助于理解我想要得到的内容。目标是循环遍历新排序的列表并用类似

的内容填充我的 div
<div>
Name: ${tileName} <br />
Description: ${tileDescrip} <br />
<img scr="${imagePath}">
</div>

生成的 TreeMap 如下所示

排序哈希

{0, bean(tileName,tiledescrip,imagePath)}
{1, bean(tileName,tiledescrip,imagePath)}
{2, bean(tileName,tiledescrip,imagePath)}

我的问题是,使用上面的代码,即使输出 map 本身确实在

处显示,我也没有从 map 的第一级迭代返回任何值。
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>

最佳答案

尽管问题更新了,我仍然不明白您在 View 方面到底需要什么。这一切都太模糊了。

无论如何,Map 上的每次 c:forEach 迭代都会给你一个 Map.Entry它又具有 getKey()getValue() 方法。

这是一个基本示例:

<c:forEach items="${map}" var="entry">
key = ${entry.key}, value = ${entry.value}<br>
<c:forEach>

这些知识应该可以帮助您入门。

另请参阅:

<小时/>

更新:我仍然不明白你用两张 map 做什么,以及为什么你需要一张Map而不是一张 map List 因为您似乎对键不感兴趣。因此,这里是一个仅包含一个映射和一个用于预处理请求的简单 servlet 类的示例。

首先是(简化的)Tile 类:

public class Tile {
private String name;
private String description;
private string imagepath;
// Add/generate c'tor/getters/setters/etc.
}

预处理 Servlet:

Map<Integer, Tile> map = new TreeMap<Integer, Tile>();
map.put(1, new Tile("name1", "description1", "imagepath1"));
map.put(2, new Tile("name2", "description2", "imagepath2"));
map.put(3, new Tile("name3", "description3", "imagepath3"));
// ...

request.setAttribute("map", map); // It'll be available as ${map} in JSP.
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);

JSP:

<c:forEach items="${map}" var="entry">
<div>
Map key: ${entry.key}<br>
Tile name: ${entry.value.name}<br>
Tile description: ${entry.value.description}<br>
Tile image: <img src="${entry.value.imagepath}">
</div>
</c:forEach>

(顺便说一下,不需要 jsp:useBean)

关于java - 问题在 JSP 中从 <id, beans> 的 TreeMap 检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4425134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com