2012-10-24 22 views
1

我對Struts2非常新穎,它帶有多選擇標籤。我在很多地方搜索過,但沒有得到解決方案。這裏是我的問題:Struts2多選列表:如何在行動類中獲取值

在JSP中我已經使用struts2中選擇這樣

<s:form action="AjaxSaveSelectedStatus"> 
    <s:select label="Select Status" name="masterStatusLists" id="masterStatusLists" 
     list="#{'1':'status1','2':'status2','3':'status3','4':'status4'}" 
     multiple="true" required="true"/> 
    <input type="submit" value="Save"/> 
</s:form> 

在struts.xml中映射

<action name="Ajax*" class="com.mypackage.actions.forms.Ajax{1}"> 
     <result name="redirect">${redirectUrl}</result> 
    </action> 

在Action類我用這樣的

public class AjaxSaveSelectedStatus extends BaseAjaxActionWithSession { 
ArrayList<MasterStatusList> masterStatusLists; 

@Override 
public String execute(){ 

    for (MasterStatusList masterStatusList : masterStatusLists) { 
     System.out.println(masterStatusList.getStatusId()); 
    } 
    return SUCCESS; 
} 
public ArrayList<MasterStatusList> getMasterStatusLists() { 
    return masterStatusLists; 
} 

public void setMasterStatusLists(ArrayList<MasterStatusList> masterStatusLists) { 
    this.masterStatusLists = masterStatusLists; 
} 
} 
標籤

這是MasterStatusList Bean類

public class MasterStatusList implements java.io.Serializable { 
    private int statusId; 
    private String statusName; 
    public MasterStatusList() {} 
    public int getStatusId() {return this.statusId;} 
    public void setStatusId(int statusId) {this.statusId = statusId;} 
    public String getStatusName() {return this.statusName;} 
    public void setStatusName(String statusName) {this.statusName = statusName;} 
} 

現在我想獲取客戶端選擇的項目列表到行動。

回答

3

由多選擇標記提交的值將是一個List(或數組或字符串的csv)字符串(在您的情況下整數1,2,3 ..)。 所以申報整數列表中,你的動作類

List<Integer> masterStatusLists; //and its getter/setter 

這必須解決的問題