为什么我的ArrayList没有在struts中填充(1.3)

时间:2012-10-15 05:38:16

标签: java arraylist struts

我的ActionForm有以下字段。

//form
private ArrayList<String> chargeIds = new ArrayList<String>();  
public ArrayList<String> getChargeIds() {  
    return chargeIds;  
}  
public void setChargeIds(ArrayList<String> chargeIds) {  
    this.chargeIds = chargeIds;  
}//form

在我的jsp中我写的如下: -

//jsp
.... 

    <html:form action="/PurchaseOrderAction" styleId="defaultForm">
    <table> 
    <logic:iterate id="element" name="<%= Constants.SHOPPING_ORDER_CART_ITEMS %>" type="mypackage.ItemBean" >
    <tr><td>
     <logic:Equal name="element" property="promotedItem" value="true">
           <html:select property="chargeIds" styleClass="transperentList" indexed="true">
               <html:options collection="<%=Constants.ALL_CHARGES %>" property="key" labelProperty="name" />
        </html:select>
      </logic:Equal>
    <logic:notEqual name="element" property="promotedItem" value="true">
      <bean:write name="element" property="chargeName"/>
    </logic:notEqual>
    </tr></td>

.....
//jsp

我正在正确填充jsp ...但是当我提交表单时...我在我的formbean的arraylist中没有任何价值。

任何想法如何?我正在使用struts 1.3(遗憾的是无法更新,因为项目从很长一段时间开始,我是团队的新成员)。

感谢。

Sarjith

2 个答案:

答案 0 :(得分:2)

尝试在表单对象中将ArrayList更改为String[]

答案 1 :(得分:0)

我不知道这是否能解决您的问题,但根据您的回答,如果您只想选择其中一个选项,则html:select的属性应该是String对象而不是Arraylist。所以你的HTML应该是这样的:

<html:select property="selectedChargeId" styleClass="transperentList" indexed="true">
    <html:options collection="chargeIds" property="key" labelProperty="name" />
</html:select>

然后你的表单应该有这些变量(与它们各自的getter和setter):

private ArrayList<String> chargeIds;
private String selectedChargeId;

它总是对我有用,我希望它能解决你的问题。