0

晚上好,我正在尝试在 HTML 中显示 HashTable 的输出,<table>而不是使用System.out.print. 问题是,我不知道确切的方法。我尝试了几种方法,但我仍然不明白如何做到这一点的逻辑。我试过这样的事情:

示例代码

public void printHtmlData() {
Hashtable htmlData = new Hashtable();

.....
.....

Enumeration enumeration = htmlData.elements();
    while (enumeration.hasMoreElements()) {
        System.out.println(enumeration.nextElement());
    }

}

输出与System.out.print

[I|desperately, need, a, girl, haru, haru, big, bang, the, best]
[I|123, 456, a, girl, haru, haru, big, bang, the, best]
[I|desperately, need, 789, 000, haru, haru, big, bang, the, best]
[I|desperately, need, a, girl, just, a, sample, output, for, testing]

我尝试为另一个 jsp 文件中的 html 输出执行此操作

<jsp:useBean ....."/>
Hashtable printHtml = new Hashtable();
          <TABLE width="100%" style="border-width : 2px 0px 0px 0px;border-style : solid solid solid solid;border-color : #C0C0C0 #C0C0C0 #C0C0C0 #C0C0C0;">
            <TR>
              <TD><%
                    printHtml.printHtmlData();
              %></TD>
            </TR>
          </TABLE>

我需要一些提示,谢谢...

4

2 回答 2

1

正确的方法是让 servletHttpServletRequest使用您的模型填充HashTable,然后将其转发到您的 JSP。(另外,请考虑使用 aHashMap代替。)

在 Servlet 中:

Hashtable nonHtmlData = new Hashtable();

// populate the map; set as request attr
request.setAttribute("model", nonHtmlData);

// forward to JSP
RequestDispatcher view = request.getRequestDispatcher("display.jsp");
view.forward(request, response);

然后在您的 JSP 中使用 EL 和 JSTL 标签:

<table>
    <c:forEach var="list" items="${model}">
        <tr>
            <th>${list.key}</th>
        <c:forEach var="listItem" items="${list.value}">
            <td>${listItem}</td>
        </c:forEach>
        </tr>
    </c:forEach>
</table>
于 2013-07-12T06:12:44.883 回答
0

根据您的评论,我认为您还不了解 JSTL。Ravi Thapliyal 的回答是通过分离业务逻辑和表示来解决这个问题的正确方法。查看模型视图控制器了解更多信息。无论如何,由于您使用的是 scriplets,您可以简单地在 HTML 中移动逻辑,然后使用隐式out对象来显示您的内容(再次记住,如果您尝试将业务逻辑与表示混合,这不是一个好方法)。您可以使用下面的伪代码作为指导。如果您想以某种方式格式化,请根据需要修复 HTML。是的,如果同步对您来说不是问题,请考虑使用 HashMap。您可以从这里开始。

HashMap 和 Hashtable 的区别?

伪代码

<table>
    <tr>
        <% while (enumeration.hasMoreElements()) { %>
           <td><%= enumeration.nextElement() %></td>  
         <%}%>
    </tr>
</table>
于 2013-07-12T06:41:10.267 回答