2012-10-19 88 views
2

我有一個arraylist,我已經設置爲jsp的hiddenField.Now,我必須在我的動作類中訪問這個列表。下面的代碼片段如下從jsp頁面的隱藏字段獲取arraylist到使用struts2的動作類

我的動作類

private ArrayList<TXT_File_Action> statusResult_list=new ArrayList<TXT_File_Action>(); 
    private ArrayList<TXT_Beans> regenerateTXTList=new ArrayList<TXT_Beans>(); 
    private ArrayList<TXT_Beans> pagingList=new ArrayList<TXT_Beans>(); 
    private ArrayList<TXT_Beans> serverList=new ArrayList<TXT_Beans>(); 



public String getGenerateList() 
    { 

      for(int j=0;j<customers_accountList.size();j++) 
       { 

       dataList=txt_managerInstance.regenerateListData(id_no); 
       regenerateTXTList.add(dataList.get(0)); 
      } 

       pagingList=getRegenerateTXTList(); 
       setRegenerateTXTList(getRegenerateTXTList()); 
       setPagingList(getPagingList()); 

     return SUCCESS; 
     } 

    getters..n setters 

我的JSP代碼是

<s:iterator value="pagingList"> 
<tr> 
    <td align="center"><s:property value="customerId" /></td> 
    <td align="center"><s:property value="cspId" /></td>  
    <td align="center"><s:property value="branchCode" /></td> 
    <td align="center" id="bcID"><s:property value="bcCode"/></td> 
</tr> 

</s:iterator> 

和下面我這樣設置在jsp中隱藏字段列表:

<input type="hidden" name="serverList" id="serverList" value="<s:property value="pagingList"/>"/> 

現在,當我點擊一個事件時,我想在我的操作類中列出這個列表。 每當我試圖打印此列表的大小SERVERLIST我行動我得到了以下錯誤:

java.lang.ArrayIndexOutOfBoundsException: -1 
    java.util.ArrayList.get(Unknown Source) 
    com.alw.action.TXT_File_Action.setPaginationList(TXT_File_Action.java:424) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    java.lang.reflect.Method.invoke(Unknown Source) 
     . 
     . 
     . 

但我相信,我得到的所有Arrayllist數據這個隱藏字段,因爲我已經檢查這個我

**<input type="hidden" name="serverList" id="serverList" value="<s:property value="pagingList"/>"/>** 

這是怎麼回事,如何在我的操作類中得到這個列表。 任何幫助將非常有幫助。

+0

究竟是什麼setPagingList(getPagingList()); :O –

+0

它不過是我的編碼風格,這是不好的做法? –

+0

不,但它什麼也沒做......你用變量的當前值設置一個變量(當然,除非你把業務邏輯變爲getter和setter,否則這將是一個不好的做法)。 –

回答

6

你不能把一個List或者直接任意Objectinputs:hidden,這裏是DOCUMENT,屬性value應該是一個字符串。如果你打算這樣做,你應該使用Struts2 Type Conversion

解決問題的最簡單方法是將列表放入會話中。這裏是鏈接SessionAware

+0

thiks jaiwo .....我知道了 –

+0

+1類型轉換 –

0

爲了緩存/存儲的目的,您不應該將一個java變量轉換爲html字段。由於您使用的是Struts,因此您可以將此ArrayList變量存儲爲表單bean的一部分。

+0

@satheesh ...好好說話,因此我必須在將來訪問這個列表。 –

相關問題