2013-07-12 58 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>