在java中将Arraylist值从servlet传递到JSP?

Posted

技术标签:

【中文标题】在java中将Arraylist值从servlet传递到JSP?【英文标题】:Passing Arraylist values from servlet to JSP in java? 【发布时间】:2017-03-18 10:12:03 【问题描述】:

我正在尝试显示我在 java 中放置在 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  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

【问题讨论】:

“Servlet 代码”部分末尾缺少一些代码。请完成它,否则无法准确诊断正在发生的事情。我有我的假设,但盲目猜测是没有意义的。 【参考方案1】:
    在 Servlet/Java 中 - 将所有字段包装成一个对象,比如“客户”

    在 JSP 中使用 JSTL,参考这个示例,

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

【讨论】:

【参考方案2】:

永远记住,JSP 的输出是 servlet 响应的主体,在本例中是 HTML。在开发和测试期间检查生成的输出是很重要的,并且只检查其他一些程序的结果——例如。 Web 浏览器对输出的 处理 不足。

我倾向于认为,如果您实际上已经查看了 JSP 发出的 HTML,那么问题就会立即显现出来,如果它是通过您提供的 JSP 代码生成的,那么它看起来类似于这个

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

<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 结构(即&lt;tr&gt;&lt;td&gt; 元素)。

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

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

【讨论】:

以上是关于在java中将Arraylist值从servlet传递到JSP?的主要内容,如果未能解决你的问题,请参考以下文章

将值从 JSP 发送到 servlet

无法在springboot中将'java.lang.string'的值从jsp转换为'java.localtime'

在 Java 中将值从一个类设置为另一个类

Java ajax 将值从 jsp 传递到 servlet

在将值从 Servlet 发送到客户端 JSP 时获取 null [重复]

在 Java 中将 'ArrayList<String> 转换为 'String[]'