Primefaces 多选p:dataTable
我想从数据表中选择一些行,并对它们执行一些操作。表中的行表示应用程序的用户,操作是禁用它们。当禁用用户的方法被调用时,所选用户的列表为空,因此不会产生任何更改。我遵循primefaces showcase示例。有人能帮忙找出错误吗 mypage.xhtml 负责执行操作的bean是这样的 ManagedBean.javaPrimefaces 多选p:dataTable,primefaces,Primefaces,我想从数据表中选择一些行,并对它们执行一些操作。表中的行表示应用程序的用户,操作是禁用它们。当禁用用户的方法被调用时,所选用户的列表为空,因此不会产生任何更改。我遵循primefaces showcase示例。有人能帮忙找出错误吗 mypage.xhtml 负责执行操作的bean是这样的 ManagedBean.java 要解决您的问题,只需将dataTable放在表单中,它将如下所示: <h:form > <p:dataTable id="tablaUsuarios" va
要解决您的问题,只需将dataTable放在表单中,它将如下所示:
<h:form >
<p:dataTable id="tablaUsuarios" var="usuario" ...>
....
<f:facet name="footer">
<p:commandButton process="@form"
value="Eliminar"
action="#{controller.eliminarUsuarios}"/>
</f:facet>
</h:form>
您需要在getter中初始化列表,如selectedUsers=new ArrayList不要忘记创建一个类似以下公共列表的条件getSelectedUsers{ifselectedUsers==null{selectedUsers=new ArrayList;}返回selectedUsers;}请添加您的错误日志我相信它将有助于为您选择的列表大小添加一些println,以查看是否有任何错误,以及是否在方法delete中输入了表单向dataTable添加表单,而不是process=tablaUsuarios make it process=@form在这里您可以找到答案,请将其作为答案,为什么不将其升级,此外,我将编辑一点你的问题,使其脚作为如此推荐
package uo.sdi.presentation;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import uo.sdi.business.AdminService;
import uo.sdi.business.Services;
import uo.sdi.business.exception.BusinessException;
import uo.sdi.dto.User;
@ManagedBean(name = "controller")
@ViewScoped
public class ControllerBean implements Serializable {
private static final long serialVersionUID = 55555L;
private String login, password;
private User user;// Usuario que inicia la sesion en la aplicacion
private List<User> users;// Lista de usuarios que tiene el administrador
private List<User> selectedUsers;// Usuarios seleccionados de la lista
// anterior para ser eliminados
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public List<User> getSelectedUsers() {
return selectedUsers;
}
public void setSelectedUsers(List<User> selectedUsers) {
this.selectedUsers = selectedUsers;
}
public String validateUser() {
String resultado;
if (this.user != null)
resultado = "error";
else
try {
this.user = Services.getUserService().findLoggableUser(login,
password);
if (this.user.getIsAdmin()) {
users = Services.getAdminService().findAllUsers();
resultado = "admin";
} else
resultado = "usuario";
} catch (BusinessException e) {
// e.printStackTrace();
resultado = "error";
}
return resultado;
}
public String eliminarUsuarios() {
String resultado = "exito";
AdminService service = Services.getAdminService();
try {
for(User user : selectedUsers)
service.disableUser(user.getId());
users = service.findAllUsers();
} catch (BusinessException e) {
resultado = "fracaso";
e.printStackTrace();
}
return resultado;
}
public String listarUsuarios() {
String resultado = "exito";
try {
users = Services.getAdminService().findAllUsers();
} catch (BusinessException e) {
resultado = "error";
e.printStackTrace();
}
return resultado;
}
}
<h:form >
<p:dataTable id="tablaUsuarios" var="usuario" ...>
....
<f:facet name="footer">
<p:commandButton process="@form"
value="Eliminar"
action="#{controller.eliminarUsuarios}"/>
</f:facet>
</h:form>