2013-06-26 45 views
1

我已成功將我的數據庫值存儲在hashmap中。如何在動態更改的表格中顯示我的jsp頁面中的散列值。看到我的行動類下面,這裏的市場代表國家。每個國家有4個值,分別是count,dataamount,result,orderdate。如何爲hashmap值動態創建表格

package com.pkg; 

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Map; 
import java.util.Map.Entry; 
import java.util.Set; 

public class JanuaryAction { 
    private String from; // creating variables to access input values. 
    private String to; // creating variables to access input values. 
    Map abc1 = new HashMap(); // Getting the map objects to store tha values 

    public Map getAbc1() { /* Creating the setters and getters */ 
     return abc1; 
    } 

    public void setAbc1(Map abc1) { 
     this.abc1 = abc1; 
    } 

    public String getFrom() { 
     return from; 
    } 

    public void setFrom(String from) { 
     this.from = from; 
    } 

    public String getTo() { 
     return to; 
    } 

    public void setTo(String to) { 
     this.to = to; 
    } 

    public Map<String, String> getAbc() { 
     return abc; 
    } 

    public void setAbc(Map<String, String> abc) { 
     this.abc = abc; 
    } 

    Map<String, String> abc = new HashMap<String, String>(); 

    Map<String, List<ReportClass>> map = new HashMap<String, List<ReportClass>>(); // Using 
                        // Map 
                        // interface 
                        // implementing 
                        // hashmap 

    public Map<String, List<ReportClass>> getMap() { 
     return map; 
    } 

    public void setMap(Map<String, List<ReportClass>> map) { 
     this.map = map; 
    } 

    public String execute() throws Exception { 

     String fromdate = getFrom(); 
     System.out.println(fromdate); 
     String todate = getTo(); 
     System.out.println(todate); 

     Connection con = GetCon.getCon(); 
     Statement statement = con.createStatement(); 

     ResultSet resultset = statement 
       .executeQuery("SELECT MarketPlace,OrderDate, ROUND(SUM(Total),2), COUNT(*) , ROUND(ROUND(SUM(Total),2)/ COUNT(*),2) FROM vend_printed WHERE OrderDate >='" 
         + fromdate + "' AND OrderDate <='" + todate + "' GROUP BY OrderDate,MarketPlace"); 

     while (resultset.next()) { 
      String marketplace = resultset.getString(1);// get the first column 
                 // in marketplace 
      String orderdate = resultset.getString(2);// get the second column 
                 // in orderdate 
      Double datamount = resultset.getDouble(3);// get the third column in 
                 // datamount 
      Integer count = resultset.getInt(4);// get the fourth column in 
               // count 
      Double result = resultset.getDouble(5); // get the fifth column in 
                // result 
      ReportClass a = new ReportClass(); // create an object to access 
               // pojo class. 

      a.setMarketplace(marketplace); // setting the values in pojo class 
      a.setOrderdate(orderdate); 
      a.setDataamount(datamount); 
      a.setCount(count); 
      a.setResult(result); 

      if (map.get(marketplace) != null) { // if the value in marketplace 
               // is null then go to else 
               // statement or go to if 
               // statement. 
       map.get(marketplace).add(a); // using the key add one complete 
               // row values from a to 
               // marketplace 
      } else { 
       List<ReportClass> optionsVO = new ArrayList<ReportClass>(); // create 
                      // a 
                      // list 
                      // optionsVo 
       optionsVO.add(a); // store Reportclass values in List. 
       map.put(marketplace, optionsVO); // storing it in map. 
       /* System.out.println(map.get(marketplace).toString()); */ 
      } 

     } 
     Set s = map.entrySet(); // A map entry (key-value pair).creating Set 
           // interface. 
     Iterator i = s.iterator(); 
     while (i.hasNext()) { 

      List<ReportClass> tempList = (List<ReportClass>) ((Entry) i.next()).getValue(); // creating 
                          // a 
                          // temporary 
                          // list 

      for (ReportClass reportClassObj : tempList) { 
       System.out.println(reportClassObj.getMarketplace());// display 
                    // values. 
       System.out.println(reportClassObj.getDataamount()); 
       System.out.println(reportClassObj.getOrderdate()); 
       System.out.println(reportClassObj.getCount()); 
       System.out.println(reportClassObj.getResult()); 
      } 
     } 

     /* System.out.println(map.size()); */ 
     return "success"; 
    } 
} 
+0

你是什麼意思「動態改變表」?你有什麼嘗試?發佈一些你的代碼。 – Makky

+0

請檢查我更新。我成功了,直到我得到hashmap中的值,然後我努力把它帶到jsp頁面,因爲它需要動態改變表格中的數據。 – user2482323

+0

格式化您的代碼花花公子。 – m0skit0

回答

1

使用下面的代碼在jsp中檢索它。

<s:iterator var="studentEntry" status="stat" value="map.entrySet()"> <br><br><br> 
Marketplace Name is: <s:property value="%{#studentEntry.getKey()}"/> <br> 
Value: <s:property value="%{#studentEntry.getValue()}"/><br><br><br> 

</s:iterator> 
+0

非常感謝。我會檢查一下 – user2482323