【问题标题】:Getting arraylist from jsp page's hidden field to action class using struts2使用struts2从jsp页面的隐藏字段获取arraylist到动作类
【发布时间】:2012-10-19 14:57:57
【问题描述】:

我有一个数组列表,我已将它设置到 jsp 的 hiddenField 中。现在我必须在我的操作类中访问这个列表。下面,sn-ps代码如下

我的动作类

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"/>"/>**

这出了什么问题,如何在我的行动课程中获取此列表。 任何帮助都会非常有帮助。

【问题讨论】:

  • 到底什么是 setPagingList(getPagingList()); :O
  • 这只是我的编码风格,这是一种不好的做法吗?
  • 不,但它什么都不做......您使用该变量的当前值设置一个变量(当然,除非您在 getter 和 setter 中有业务逻辑。那将是一个不好的做法)。

标签: java list jsp struts2 hidden-field


【解决方案1】:

您不能将List 或任何Object 直接放入inputs:hidden,这里是DOCUMENT,属性value 应该是一个字符串。如果你打算这样做,你应该使用Struts2 Type Conversion

解决您的问题的最简单方法是将您的列表放入会话中。这是链接SessionAware

【讨论】:

  • @arvin_codeHunk,最后你尝试了哪种方法。如果您使用了 Struts2 类型转换,能否请您分享这段代码...我已经使用了一个与 multitab 有一些问题的会话。
  • 你能解释一下如何使用 Struts2 类型转换来完成吗?
【解决方案2】:

您不应该将 java 变量添加到 html 字段以进行缓存/存储。由于您使用的是 Struts,因此您可以将此 ArrayList 变量存储为表单 bean 的一部分。

【讨论】:

  • @satheesh...好吧,我以后必须访问这个列表,因此。
猜你喜欢
  • 2013-04-28
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多