2014-01-24 30 views
-2

我正在使用struts2框架。我有一個操作,在一些處理後轉發給結果JSP。 該動作的形式包含一個數組對象及其設置者和獲取者。 我也使用模型驅動接口,以便所有表單域自動映射。 現在,在結果JSP中,我想將該數組對象設置在隱藏字段中,以便在表單上再次提交該數組對象時被映射,但發生了什麼(讓我的數組元素爲{1,2,3})隱藏字段標記將此數組轉換爲「1,2,3」的String對象,並將其設置爲數組對象的第一個元素。我應該怎麼做?在struts2隱藏字段中設置數組對象

 <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> 

Action類越來越形態價值--- >>

  int i=0; 
    String h[]=activeLicenseReportForm.getLicenseType(); 
    String license =""; 
    for(i=0; i<h.length; i++) 

setter和getter表格----- >>>

 public String[] getLicenseType() { 
    return _licenseType; 
     } 

public void setLicenseType(String[]licenseType) { 
    this._licenseType=licenseType; 

    } 
+0

一個字段 - >一個值。如果你只想使用struts標籤來做到這一點,你需要遍歷你的數組,併爲數組中的each_ item設置一個隱藏字段。如果所有這些字段具有相同的名稱,那麼表單將爲同一個變量發送多個值 - 一個數組。 –

回答

0

因爲這是有意義的您的應用程序,Object的數組,例如,Integer的數組將需要轉換爲String。您需要在操作類中創建String屬性,並在退出操作類之前調用​​Arrays.toString(arr)並將值設置爲String屬性。

例如

public class MyAction extends ActionSupport 
{ 
    private String myHiddenFieldArr; 
    //getters and setters 

    public String myAction() throws Exception 
    { 
     //Do you logic 
     myHiddenFieldArr = Arrays.toString(your_Array); 
    } 
} 
+0

是的,我的數組只是字符串,我只是用了1,2,3。 謝謝你的回覆。 – Arpit

+0

@Arpit所以它現在工作。如果它是upvote並打勾答案。 –

+0

沒有它的數組對象沒有工作null null – Arpit

0

如果ARR1是要傳遞到jsp和ARR1陣列的名稱也是陣列入動作的名稱在將要傳遞數組值(即,在下一動作)那麼你可以使用如下:

<s:iterator value="arr1" status="stat"> 
    <s:hidden name="arr1[%{#stat.index}]" /> 
</s:iterator> 
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被映射到我的行動getter和setter(OGNL棧)

public String getPackageDetail() { 
    return packageDetail; 
} 

public void setPackageDetail(String packageDetail) { 
    this.packageDetail = packageDetail; 
}