2015-03-19 2 views
0

Мое требование: вначале я хочу показывать данные пользователей на странице и когда пользователь вносит изменения в форму, я хочу получить доступ к измененным данным.Как получить доступ к значениям DropDown в Struts 2 Действие

Ниже приведен код в классе действий,

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 и отправлю форму, я получаю измененное значение текстового поля, но для 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 атрибуте ..

Смежные вопросы