我的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
答案 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;
它总是对我有用,我希望它能解决你的问题。