我正在使用struts2框架。我有一个动作,经过一些处理转发到结果JSP。 该操作的形式包含一个数组对象及其setter和getter。 我也在使用模型驱动接口,以便自动映射所有表单字段。 现在,在结果JSP中我想在隐藏字段中设置该数组对象,以便在表单提交时再次映射该数组对象,但发生的事情是(假设我的数组元素为{1,2,3})隐藏字段tag将String对象中的数组转换为“1,2,3”,并将其设置为数组对象的第一个元素。我该怎么做?
<s:iterator value="licenseType" status="stat1">
<s:hidden name="licenseType[%{#stat1.index}]" />
</s:iterator>
<s:iterator value="status" status="stat2">
<s:hidden name="status[%{#stat2.index}]" />
</s:iterator>
获取表单值的操作类---&gt;&gt;
int i=0;
String h[]=activeLicenseReportForm.getLicenseType();
String license ="";
for(i=0; i<h.length; i++)
表格中的Setter和Getter -----&gt;&gt;&gt;
public String[] getLicenseType() {
return _licenseType;
}
public void setLicenseType(String[]licenseType ) {
this._licenseType=licenseType;
}
答案 0 :(得分:0)
为了使您的应用程序有意义,Object的数组(例如Integer
数组)需要转换为String
。您需要在操作类中创建String
属性,并在退出操作类之前调用Arrays.toString(arr)
并将值设置为String
属性。
e.g。
public class MyAction extends ActionSupport
{
private String myHiddenFieldArr;
//getters and setters
public String myAction() throws Exception
{
//Do you logic
myHiddenFieldArr = Arrays.toString(your_Array);
}
}
答案 1 :(得分:0)
如果arr1是你传入jsp的数组的名称,arr1也是你将数组值传递到的动作中的数组的名称(即在下一个动作中),那么你可以使用下面:
<s:iterator value="arr1" status="stat">
<s:hidden name="arr1[%{#stat.index}]" />
</s:iterator>
答案 2 :(得分:0)
这是我的名为packageList的数组:
<tr>
<td>
<s:select theme="simple" list="%{#request.packagesList}" listKey="packageId" listValue="packageName" headerKey="0" headerValue="--Select--" name="packageDetail" id="packageDetail" />
</td>
</tr>
现在这个packageList被映射到我的Action getter和Setter(OGNL堆栈)
public String getPackageDetail() {
return packageDetail;
}
public void setPackageDetail(String packageDetail) {
this.packageDetail = packageDetail;
}