晚上好,我正在尝试在HTML <table>
中显示HashTable的输出,而不是使用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>
我需要一些提示,谢谢...
答案 0 :(得分:1)
正确的方法是让servlet使用您的模型HttpServletRequest
填充HashTable
,并将其转发到您的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>
答案 1 :(得分:0)
从您的评论中,我认为您还不知道JSTL。通过分离业务逻辑和表示,Ravi Thapliyal回答是正确的方法。查看Model View Controller了解详情。无论如何,因为你正在使用scriplet,你可以简单地在HTML中移动逻辑然后使用隐式out
对象来显示你的内容(再次,请记住,如果你尝试混合业务逻辑,这不是一个好方法与演示文稿)。您可以使用下面的伪代码作为指导。如果要格式化某种方式,请根据需要修复HTML。是的,如果同步不是您的问题,请考虑使用HashMap。你可以从这里开始。
Differences between HashMap and Hashtable?
<强> 伪代码 强>
<table>
<tr>
<% while (enumeration.hasMoreElements()) { %>
<td><%= enumeration.nextElement() %></td>
<%}%>
</tr>
</table>