2013-07-12 53 views
0

晚上好,我正在尝试在HTML <table>中显示HashTable的输出,而不是使用System.out.print。问题是,我不知道确切的做法。我尝试了几种方法,但我仍然不明白如何去做的逻辑。我想是这样的:如何将Enumeration.elements()输出转换为HTML表格

示例代码

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文件

<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> 

做到这一点的HTML输出我需要一些提示,谢谢...

+0

对不起,我在小脚本有点生疏,但你试过只需移动HTML中的打印码?由于您使用的是脚本,因此您可以使用'out'对象来呈现某些html标记,因为您正在打印您感兴趣的地图值。 – Andy

+1

但我应该说,将逻辑放入视图中并不是件好事。你真的想分开你的顾虑。考虑使用全面的JSP和引用这个更好的答案http://stackoverflow.com/questions/1835683/how-to-loop-through-a-hashmap-in-jsp – Andy

+0

雅,我会看看它.. 谢谢... –

回答

0

从您的意见,我在想你还不知道JSTL。 Ravi Thapliyal的答案是通过分离业务逻辑和表达来解决这个问题的正确方法。检查出Model View Controller欲知更多信息。无论如何,因为您正在使用脚本,您可以简单地移动HTML内部的逻辑,然后使用隐含的out对象来显示您的内容(同样,请记住,如果您尝试将业务逻辑与表示混合,这不是一个好方法)。您可以使用下面的伪代码作为指导。如果您想要以某种方式进行格式化,请根据需要修复HTML。是的,如果同步对您来说不是问题,请考虑使用HashMap。你可以从这里开始为初学者。

Differences between HashMap and Hashtable?

<table> 
    <tr> 
     <% while (enumeration.hasMoreElements()) { %> 
      <td><%= enumeration.nextElement() %></td> 
     <%}%> 
    </tr> 
</table> 
+0

哇,thks ...真的很感激... –

+0

不客气:) – Andy

2

看一看here。我相信你可以用它来解决你的问题。

+0

哇,它的一个艰难的1 ... 我会试图弄清楚,谢谢... –

1

正确的方法是让一个servlet用您的模型HashTable填充HttpServletRequest并将其转发到您的JSP。 (另外,考虑使用HashMap代替。)

中的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>