当提及Post的标题时,我试图从ui:repeat
内部的h:inputText
中更新ArrayList的值,该值不起作用。
请参看下面的实物模型做进一步的了解:在ui中使用inputText:重复更新ArrayList的值不起作用
我有一个POJO类,如下所示:
public class User implements Serializable{
private String name;
private List<String> emails;
public User(String name, List<String> emails) {
super();
this.name = name;
this.emails = emails;
}
//Setters Getters
}
在我的经理,我已经创建了用户的POJO名单:
@ManagedBean
@ViewScoped
public class UserManager implements Serializable {
private List<User> userList;
public UserManager() {
userList = new ArrayList<User>();
ArrayList<String> emails= new ArrayList<String>();
emails.add("[email protected]");
emails.add("[email protected]");
userList.add(new User("User1", (List<String>) emails.clone()));
emails.clear();
emails.add("[email protected]");
emails.add("[email protected]");
userList.add(new User("User2", (List<String>) emails.clone()));
}
public void action(){
for(User u : userList){
System.out.println(u);
}
}
//Setters Getters
}
现在在我的Facelet中,我使用ui:repeat
将数据加载到h:inputText
中,以便用户可以编辑和更改这些值。 的facelet代码:
<h:form id="userForm">
<table border="1">
<ui:repeat var="user" value="#{userManager.userList}">
<tr>
<td><h:inputText value="#{user.name}"/> </td>
<ui:repeat var="email" value="#{user.emails}">
<td><h:inputText value="#{email}"/> </td>
</ui:repeat>
</tr>
</ui:repeat>
</table>
<h:commandButton value="Save" action="#{userManager.action}">
<f:ajax execute="@form @this"/>
</h:commandButton>
</h:form>
上述方法,当我编辑#{user.name}
但它不与#{email}
工作的正常工作。
我可以假定它的工作#{user.name}
,因为name
有setter和getter方法。
那么如何更新emails
列表对象。
我的POJO设计很差吗?或者使用ui:repeat
不好主意?
我该如何做到这一点?
注:我目前钻嘴鱼科的版本是2.1
你是不是能够看到电子邮件列表还是什么? – BholaVishwakarma