2015-03-19 52 views
0

我的要求是,在開始時我想要在頁面上顯示用戶數據,以及當用戶在窗體中進行更改時,我想訪問更改的數據。如何訪問Struts 2中的DropDown值操作

下面是我在Action類代碼,

public class DisplayData extends ActionSupport implements ModelDriven<List<User>>, Preparable { 
private List<User> userList; 
@Override 
public void prepare() throws Exception { 
userList = new ArrayList<User>(); 
userList.add(new User("Demo","N")); 
userList.add(new User("Demo1","Y")); 
userList.add(new User("Demo2","Y")); 
userList.add(new User("Demo3","N")); 
} 
@Override 
public List<User> getModel() { 
    return userList; 
} 
public String execute(){ 
for (User value: userList) { 
    System.out.println(value.getName() +":"+value.getFlag()); 
} 
return "success"; 
} 
public List<User> getUserList() { 
    return userList; 
} 
public void setUserList(List<User> userList) { 
    this.userList = userList; 
} 
} 

User類,

public class User implements Serializable 
{ 
    private String name; 
    private String flag; 
    public User() {} 
    public User(String name,String flag) { 
    super(); 
    this.name = name; 
    this.flag = flag; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
    this.name = name; 
    } 
    public String getFlag() { 
    return flag; 
    } 
    public void setFlag(String flag) { 
     this.flag = flag; 
    } 
    } 

代碼在JSP頁面中

<s:form name="getData" action="getData" method="post"> 
<table> 
<s:iterator value="model" status="rowStatus"> 
    <tr> 
    <td> 
     <s:textfield name="model[%{#rowStatus.index}].name" value="%{model[#rowStatus.index].name}"/> 
     <s:select name="%{model[#rowStatus.index].flag}" value="%{model[#rowStatus.index].flag}" 
     list="#{'Y':'Yes','N':'No'}" /> 
    </td> 
    </tr> 
</s:iterator> 
</table> 
    <s:submit name="ok" value="ok" /> 
</s:form> 

當頁面得到呈現,它顯示適當的值文本框和下拉菜單。 如果我更改了Textfield和Droprdown中的值並提交表單,那麼我將獲得textfield的修改值,但對於dropdwon它顯示的是舊值。我如何訪問選定的下拉列表值?

回答

0

得到的答覆... :)

這是語法錯誤。取而代之的

<s:select name="%{model[#rowStatus.index].flag}" value="%{model[#rowStatus.index].flag}" 
    list="#{'Y':'Yes','N':'No'}" /> 

使用

<s:select name="model[#rowStatus.index].flag" value="%{model[#rowStatus.index].flag}" 
    list="#{'Y':'Yes','N':'No'}" /> 

我在name屬性使用%{ } ..