使用Apache MyFaces JSF 2.0。
XHTML代码:
<h:form id="searchUser" prependId="false">
<h:selectManyListbox value="#{listManyBean.listUser}" id="userList" size="10">
<f:selectItems value="#{listManyBean.selListUser}"/>
</h:selectManyListbox>
<h:commandButton id="clickGo" value="#{bundle.btn_login}"
type="submit"
action="#{listManyBean.submitList}"/>
<input type="button" value="Add" onclick="addUserToList();" />
</h:form>
要添加到列表中的脚本:
function addUserToList(){
var UserListBox = document.getElementById('UserList');
var UserNum = document.getElementById('UserNumber').value.toUpperCase();
var UserOption = new Option(UserNum,UserNum);
UserListBox.options[UserListBox.options.length] = UserOption;
}
豆:
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
@ManagedBean
@RequestScoped
public class ListManyBean {
private List<String> listUser;
private List<SelectItem> selListUser;
public List<SelectItem> getSelListUser() {
return selListUser;
}
public List<String> getListUser() {
return listUser;
}
public void setListUser(List<String> listUser) {
this.listUser = listUser;
}
public void submitList() {
System.out.println("User List Value***" + this.listUser);
System.out.println("User ListPan***++"+selListUser);
}
}
无论是添加一个还是多个记录,我总是会变为null。 请告诉我这里出了什么问题。
答案 0 :(得分:1)
您使用JS而不是使用JSF添加新项目。这样JSF就不会知道有关新项目的任何信息。此信息绝不会提交给服务器端。
通过理智的JSF方法替换错误的JS方法:
<h:form>
<h:selectManyListbox value="#{bean.selectedUsers}" size="10">
<f:selectItems value="#{bean.availableUsers}" />
</h:selectManyListbox>
<h:commandButton value="submit" action="#{bean.submit}" />
<h:inputText value="#{bean.user}" />
<h:commandButton value="Add" action="#{bean.add}">
<f:ajax execute="@form" render="@form" />
</h:commandButton>
</h:form>
和
@ManagedBean
@ViewScoped
public class Bean {
private List<String> selectedUsers;
private List<String> availableUsers = new ArrayList<String>();
private String user;
public void add() {
availableUsers.add(user);
user = null;
}
public void submit() {
System.out.println("Selected users: " + selectedUsers);
System.out.println("Available users: " + availableUsers);
}
// ...
}