2013-12-09 25 views
1

我從特定類別的數據庫中獲取數據。 假設我選擇或傳遞的數據來查詢該類別是筆記本電腦,然後它給我所有屬性的數據和它的價值。 像:如何將數據特定字段明智分組?

enter image description here

我對JSP頁面上獲取和顯示數據的代碼是:

<% 
      List<String> attribNameList = (List<String>)request.getAttribute("attribName"); 
      List<String> attribValueList = (List<String>)request.getAttribute("attribValue"); 
      List<String> attribDataList = (List<String>)request.getAttribute("attribData"); 
      String aname,aval,adata; 

      for(int i = 0 ; i<attribValueList.size() ; i++) 
      { 
       aname = attribNameList.get(i); 
       aval = attribValueList.get(i); 
       adata = attribDataList.get(i); 

     %> 
      <a><%=i%><%= aname %></a> &nbsp; 
      <a><%= aval %></a> &nbsp; 
      <% 
       if(adata == null) 
       { 

       } 
       else 
       { 
        %> 
         <a><%= adata %></a> 
        <% 
       } 
      %> 

      <br> 
     <% 
      } 
     %> 

這裏aname顯示即RAM, Processor, etc.

aval顯示值屬性名稱即4, 2.8, etc.

adata顯示最後的數據,即GB, GHz, MP, etc.

現在我想顯示的數據類別明智像所有內存屬性將首先顯示。 Like:

RAM 4 GB 
HDD 1 TB 
Cache 3 MB, etc. 

如何以這種格式顯示數據? 我一直在使用if condition其中adata變量與

if(adata.equals("GB")||adata.equals("TB")||adata.equals("MB")) 
{ 
    //memory category data display 
} 
else 
{ 
    //Other data 
} 

檢查嘗試,但它無法正常工作。

任何建議,請...

回答

1

如何創建自定義對象來存儲您的條目:

class MyDataRow implements Comparable<MyDataRow> { 
    private String aname; 
    private String aval; 
    private String adata; 

    // getters, setters, constructors etc 

    @Override 
    public int compareTo(MyDataRow other) { 
     final int BEFORE = -1; 
     final int EQUAL = 0; 
     final int AFTER = 1; 

     if(other == null) return AFTER; 
     if(other.getAdata().equals(this.adata)) return EQUALS; 

     if(this.adata.equals("GB")||this.adata.equals("TB")||this.adata.equals("MB")) 
     { 
      if(other.getAdata().equals("GB") || xxxxxxx) return EQUAL; 
      return BEFORE; 
     } 

     if(next category in the list... etc etc) 
    } 
} 

那麼你的數據庫查詢的結果填充一個列表。在MyDataRow中,使用所需的排序邏輯覆蓋'compareTo'方法。在你打開列表到頁面的循環之前,先調用Collections.sort(myDataRowList):

List<MyDataRow> myDataRowList = new ArrayList<MyDataRow>(); 
for(int i = 0 ; i<attribValueList.size() ; i++) 
{ 
     aname = attribNameList.get(i); 
     aval = attribValueList.get(i); 
     adata = attribDataList.get(i); 
     myDataRowList.add(new MyDataRow(aname, aval, adata); 
} 

Collections.sort(myDataRowList); // now your myDataRowList is sorted in the order you want 

for(MyDataRow myDataRow : myDataRowList) { 

    // print rows to screen 

} 
+0

先生,如果可能的話你會給我一個小例子嗎?因爲你想告訴我,我只是理解了一些部分。 –

+0

我已經添加了一些示例代碼 - 我現在遠離我的開發環境,所以我沒有嘗試編譯它,並且您需要填寫額外的信息,但希望這可以爲您提供這個想法嗎? – Matt

+0

意味着我必須在Java文件中添加此代碼?我必須從JSP頁面中刪除代碼嗎?以及如何接收所有代碼到jsp頁面? –

相關問題