2016-11-04 79 views
0

我打算显示我放入Java中的Arraylist中的值,并将它传递给JSP页面并将其显示在表格行中。但结果显示在一个非常奇怪的方式。请帮助我。我被卡住了。在Java中将servlet的Arraylist值传递给JSP?

servlet代码:

ArrayList al = new ArrayList(); 
    while(rs.next())  
        { 
         count ++; 
         String country = rs.getString("CustomerCountry"); 
         String customerid = rs.getString("CustomerID"); 
         String TitleofAccount = rs.getString("TitleofAccount"); 
         String FirstName = rs.getString("FirstName"); 
         String LastName = rs.getString("LastName"); 
         String City = rs.getString("City"); 
         String Address = rs.getString("Address"); 
         String emailid = rs.getString("EmailID"); 
         String typeofid = rs.getString("TypeOfID"); 
         String Idnumber = rs.getString("IDNumber"); 
         String branchid = rs.getString("BranchID"); 
         String cardnumber = rs.getString("CardNumber"); 
         String bankaccntid = rs.getString("BankAccountID"); 
         String currencyid = rs.getString("CurrencyID"); 
         String isspeciallimit = rs.getString("IsSpecialLimit"); 
         String dailylimit = rs.getString("DayTransactionLimit"); 
         al.add(rs.getString("CardNumber")); 
         al.add(bankaccntid); 
         al.add(currencyid); 
         al.add(rs.getString("DayTransactionLimit")); 
         al.add(isspeciallimit); 

JSP页面:

 <table width="700px" align="center" style="border:1px solid #000000;"> 
      <tr> 
       <td colspan=4 align="center" style="background-color:teal"> 
        <b>User Record</b></td> 
      </tr> 
      <tr style="background-color:lightgrey;"> 
       <td><b>Account No</b></td> 
       <td><b>Card Number</b></td> 
       <td><b>CurrencyID</b></td> 
       <td><b>Daily Limit</b></td> 
       <td><b>Status Limit</b></td> 
      </tr> 

<% 
    if (request.getAttribute("al")!=null) 
    { 
     ArrayList arr = (ArrayList)request.getAttribute("al"); 
     for(int i=0;i<arr.size();i++) { 
      out.println(arr.get(i) + "<html>&nbsp&nbsp<p></p></html>"); 
      //out.println("<html>&nbsp&nbsp</html>"); 
     } 
    } 
%> 

输出:

[kenya, K, 432342423, , 100000.0000, 0, 
    kenya, Kumar11, 78788787878, OOOPP, 100000.0000, 0, 
    kenya, Kb1, 001001000095, KES, 500000.0000, null] 

我想要的结果显示为:

1st row - kenya, K, 432342423, , 100000.0000, 0, 
    2nd row - kenya, Kumar11, 78788787878, OOOPP, 100000.0000, 0, 
    3rd row - kenya, Kb1, 001001000095, KES, 500000.0000, null 
+0

“Servlet代码”部分末尾缺少一些代码。请完成它,否则无法精确诊断正在发生的事情。我有我的假设,但盲目猜测毫无意义。 – t0r0X

回答

0
  1. 在Servlet的/爪哇 - 总结各个领域为对象,说 “客户”
  2. 使用JSTL内JSP,请参阅本样本,

    <c:forEach var="customer" items="CustomersList"> <c:out value="${customer.id}" /> <c:out value="${customer.userName}" /> <c:out value="${customer.password}" /> <c:out value="${customer.email}" /> </c:forEach>

CustomersList是您从Servlet传递给JSP的arrayList。

0

一定要记住,JSP的输出是servlet响应的主体,在这种情况下,它是HTML。在开发和测试过程中检查生成的输出以及仅检查其他程序的结果是非常重要的。一个网页浏览器的处理那个输出是不够的。

我倾向于认为如果您实际上已经查看了JSP发出的HTML,那么如果通过您提供的JSP代码生成的HTML将会看起来像这样

<!-- [...] --> 

<tr style="background-color:lightgrey;"> 
    <td><b>Account No</b></td> 
    <td><b>Card Number</b></td> 
    <td><b>CurrencyID</b></td> 
    <td><b>Daily Limit</b></td> 
    <td><b>Status Limit</b></td> 
</tr> 

kenya<html>&nbsp&nbsp<p></p></html> 
K<html>&nbsp&nbsp<p></p></html> 
432342423<html>&nbsp&nbsp<p></p></html> 
<html>&nbsp&nbsp<p></p></html> 
100000.0000<html>&nbsp&nbsp<p></p></html> 
0<html>&nbsp&nbsp<p></p></html> 

<!-- [...] --> 

(增加了清晰度换行。)

这样的代码是荒诞不符合要求的,而且它而且具有无HTML结构的,你应该预料到用来表示表格数据(即<tr><td>元素)。

另一方面,我不明白您呈现的输出可能来自您呈现的JSP代码,无论您是呈现原始还是呈现。输出看起来像从out.println(arr)得到的结果,而不是一次打印一个列表元素。

此外,输出似乎并不完全对应于servlet代码,因为它似乎每个记录包含六个数据,而您显示的servlet只提供每个记录五个数据。