在struts2隐藏字段中设置数组对象

时间:2014-01-24 05:53:10

标签: java struts2

我正在使用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;

    }

3 个答案:

答案 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;
}