java - 防止在 java 中两次显示 Arraylist 值

标签 java jsp arraylist jstl

我有一个返回数组列表的方法。但是 Arraylsit 显示了两次它的值。 代码是-

ArrayList<Double> ref_jsp=new ArrayList<Double>();

public  ArrayList<Double> refernece(String name) throws SQLException, ParseException {

    String first=name.substring(1,19);
    String last =name.substring(24,42);
   List<Double> slist = new ArrayList<Double>(map1.keySet());
  String s = StringUtils.join(slist, ',');
  System.out.println("comma separated string"+s);

       try
            {  
              con = getConnection();
              stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

             String vs2="SQL Query"
             stmt.executeQuery(vs2);
             rs1 = stmt.getResultSet();

             while(rs1.next()) 
                {
                   ref_jsp.add((rs1.getDouble(1)));
                   ref_jsp.add((rs1.getDouble(2)));
                   ref_jsp.add((rs1.getDouble(3)));
                   ref_jsp.add((rs1.getDouble(4)));
                   ref_jsp.add((rs1.getDouble(5)));
                   ref_jsp.add((rs1.getDouble(6)));
                   ref_jsp.add(rs1.getDouble(7));
                   ref_jsp.add(rs1.getDouble(8));
                   ref_jsp.add(rs1.getDouble(9));
                   ref_jsp.add(rs1.getDouble(10));
                   ref_jsp.add((rs1.getDouble(11)));

            }  
         }
        catch( Exception e )
                {
                    System.out.println("\nException in reference "+e);
                }
        return ref_jsp;
    }

我的 Sql 查询没问题,我检查过了。ref_jsp 返回的值显示了两次。请解释我哪里出错了??我的显示列表值的 jsp 代码是-

<%
 String ref_name= request.getParameter("ref_logtime");
 pageContext.setAttribute("ref_name", ref_name);
 ref.FindClosestToMultiplesOfTen(ref_name);
 ref.refernece(ref_name);
%>
<table width = "300px" border = "1" cellspacing="2">

 <tr><c:forEach var="r" items="${ref.refernece(param.ref_logtime)}"> 
 <td><c:out value="${r}"></c:out></td>
 </c:forEach></tr>
 </table>

我的输出是这样的形式-

 value-1 value-2 value-3 value-4 value-1 value-2 value-3 value-4

最佳答案

看起来问题是因为您的 java 类中的以下行。

ArrayList<Double> ref_jsp = new ArrayList<Double>();

您已声明 ref_jsp作为类级变量,将其移入方法 public ArrayList<Double> refernece(String name) .

它正在发生,因为您正在调用您的 referenece来自 jsp 的方法两次。

<%
 String ref_name= request.getParameter("ref_logtime");
 pageContext.setAttribute("ref_name", ref_name);
 ref.FindClosestToMultiplesOfTen(ref_name);
 ref.refernece(ref_name); //******* 1st call *********
%>
<table width = "300px" border = "1" cellspacing="2">

 <tr><c:forEach var="r" items="${ref.refernece(param.ref_logtime)}">//***2nd call*** 
 <td><c:out value="${r}"></c:out></td>
 </c:forEach></tr>
 </table>

在第一次调用期间,假设您有 10 个项目并且这些项目已添加到您的数组列表中,并且由于该数组列表是一个实例级变量,在第二次调用期间您再次获得 10 个项目并且与现有的 10 个项目一起添加,因此你有重复的项目。

关于java - 防止在 java 中两次显示 Arraylist 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28535886/

相关文章:

java - org.apache.jasper.JasperException/javax.el.PropertyNotFoundException :

java - 当尝试制作没有 jsp 页面的 Angular Web 应用程序时,我应该使用 Servlet Dispatcher 吗?

java - java 方法内多个 ArrayList 初始化可能出现的内存问题

java - 如何使用 Struts 嵌套标签库从 HashSet 字段属性中获取项目?

java - 如何在java中的固定位置将数组列表元素向右移动一些索引

java - 如何使用android中的 Intent 打开存储中的特定文件夹

java - 如何在 ActionListener 中访问此变量?

java - Flink 错误 : java. lang.NoSuchMethodError : org. apache.flink.api.table.Table

java - 使用过滤仅从 Java8 中的文件夹中获取文件名

java - 如何使用<表单:input> for NOT form object