2

我在我的 JSP 中定义了一个递归函数-

<%!
public void displayFiles(HashMap files, JspWriter writer) throws IOException {

    Iterator iterator;
    iterator = files.entrySet().iterator();

    while(iterator.hasNext()) {
        Map.Entry mEntry = (Map.Entry) iterator.next();
        if(mEntry.getValue() == null) {
            writer.println("<a href=\"DownloadServlet?action=downloadfile&file=" + mEntry.getKey() + "\">" + mEntry.getKey() + "</a>");
            writer.println("<br>");
        }
    }

    iterator = map.entrySet().iterator();
    while(iterator.hasNext()) {
        Map.Entry mEntry = (Map.Entry) iterator.next();
        if(mEntry.getValue() != null) {
            if(((HashMap) mEntry.getValue()).size() != 0) {
                writer.println("---------------------------");
                writer.println("<br>");
                writer.println("Directory : " + mEntry.getKey());
                writer.println("<br>");
                writer.println("---------------------------");
                writer.println("<br>");
                displayFiles((HashMap) mEntry.getValue(), writer); // recursive call
            }
        }
    }
}
%>

它的作用是打印出一个HashMap中包含的目录结构——

<%
    map = (HashMap) request.getAttribute("hashmap");
    displayFiles(map, out);
%>

错误

org.apache.jk.common.ChannelSocket processConnection 
WARNING: processCallbacks status 2

我认为原因是——

http://mail-archives.apache.org/mod_mbox/tomcat-users/200905.mbox/%3C6B028542C4A77D4CB7F06CCC1C1AEB1D018BC5CEE0@AUSP01VMBX03.collaborationhost.net%3E

那么如何将我的 HashMap 递归打印给用户呢?我的 HashMap 的结构 -

Key    |    Value
-----------------
File   |    Null
File   |    Null
Dir    |    Nested HashMap ----> Key   |    Value
File   |    Null                 ----------------
Dir    |    Nested HashMap       File  |    Null
                                 Dir   |    Nested HashMap

我希望结构清晰。JSP 从控制器 servlet 接收此 HashMap。

4

0 回答 0