如何在Struts 2 Action中访问DropDown值

时间:2015-03-19 06:14:28

标签: struts2

我的要求是,一开始我想在页面上显示用户数据,当用户在表单中进行更改时,我想访问更改的数据。

以下是我在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;
 }
}  

用户类,

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,它显示旧值。如何访问下拉列表的选定值?

1 个答案:

答案 0 :(得分: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 ..