java - 问题在 JSP 中从 <id, beans> 的 TreeMap 检索值

标签 java jsp dictionary jstl

我在尝试从包含一段时间的 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/

相关文章:

c++ - 在 C++ 中使用 map 时输出顺序错误

html - map /区域周围的阴影

java - 排除所有依赖项的所有传递依赖项?

java - 如何在 JBehave 中转义 '|' 字符

java - 从日历转换时sql.Timestamp 1秒错误

java - 运行经典标签处理程序时出现问题

java - Spring MVC 国际化不起作用

java - jnetpcap java.lang.UnsatisfiedLinkError :/usr/lib/libjnetpcap. so : libpcap. so.0.9: 无法打开共享对象文件: 没有这样的文件或目录

java - 如何在jsp中显示数据库中最后创建的图像

python - 检查两个字典是否不相交