Primefaces数据表,删除行后不更新
我正在尝试从primefaces数据表中删除一行,但在刷新浏览器之前,它不会自动更新 我就是这样做的:Primefaces数据表,删除行后不更新,primefaces,datatable,row,delete-row,Primefaces,Datatable,Row,Delete Row,我正在尝试从primefaces数据表中删除一行,但在刷新浏览器之前,它不会自动更新 我就是这样做的: <p:column headerText="Eliminar Usuario" rendered="#{user.current.tipo.equalsIgnoreCase('planta')}"> <p:commandButton action="#{usuarios.eliminar(o.idUsuario)}" value="Eliminar" update="@fo
<p:column headerText="Eliminar Usuario" rendered="#{user.current.tipo.equalsIgnoreCase('planta')}">
<p:commandButton action="#{usuarios.eliminar(o.idUsuario)}" value="Eliminar" update="@form"/>
</p:column>
我已经尝试将datatable包装到一个h:panelgroup中,我还尝试使用update=“:formUsuarios:users”(我表单的id是formUsuarios,表的id是users)。我将“ajax=”true“放在commandButton中,没有任何效果
我不知道还能尝试什么。我正在使用primefaces 3.5
这是我的豆子:
@ManagedBean(name = "usuarios")
@ViewScoped
public class UsuariosBean {
@ManagedProperty(value="#{user}")
private LoginBean loginBean;
private List<UsuariosEntity> usuarios;
UsuariosEntity user=new UsuariosEntity();
private String nombre;
private int activo;
private String tipo;
private String password;
private String selection;
private UIComponent mybutton;
@PostConstruct
public void init(){
UsuariosEntity usuario=loginBean.getCurrent();
usuarios=new ArrayList<UsuariosEntity>();
if(usuario.getTipo().equalsIgnoreCase("Planta")){
usuarios= UsuariosDAO.getALL();
}else{
usuarios= UsuariosDAO.getALLbyRol(usuario.getUsuario());
}
}
public UIComponent getMybutton() {
return mybutton;
}
public void setMybutton(UIComponent mybutton) {
this.mybutton = mybutton;
}
public String getSelection() {
return selection;
}
public void setSelection(String selection) {
this.selection = selection;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getActivo() {
return activo;
}
public void setActivo(int activo) {
this.activo = activo;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public LoginBean getLoginBean() {
return loginBean;
}
public void setLoginBean(LoginBean loginBean) {
this.loginBean = loginBean;
}
public UsuariosEntity getUser() {
return user;
}
public void setUser(UsuariosEntity user) {
this.user = user;
}
public List<UsuariosEntity> getUsuarios() {
return usuarios;
}
public void setUsuarios(List<UsuariosEntity> usuarios) {
this.usuarios = usuarios;
}
public void newUsuario(){
UsuariosEntity user=new UsuariosEntity();
user.setIdPlanta(2);
user.setActivo(this.activo);
user.setPassword(this.password);
user.setUsuario(this.nombre);
user.setTipo(this.selection);
List<UsuariosEntity>usuariox=UsuariosDAO.findbyname(this.nombre);
if (usuariox.size()==0){
UsuariosDAO.save(user);
}else{
FacesMessage message = new FacesMessage("El usuario ya existe en la base de datos");
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(mybutton.getClientId(context), message);
}
}
public void eliminar(int id_user){
UsuariosEntity user=UsuariosDAO.find(id_user);
UsuariosDAO.eliminar(user);
}
public void onEdit(RowEditEvent event) {
UsuariosDAO.save(((UsuariosEntity)event.getObject()));
FacesMessage msg = new FacesMessage("Usuario Editado", ((UsuariosEntity) event.getObject()).getUsuario());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onCancel(RowEditEvent event) {
FacesMessage msg = new FacesMessage("Edición Cancelada", ((UsuariosEntity) event.getObject()).getUsuario());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
@ManagedBean(name=“usuarios”)
@视域
公共类UsariosBean{
@ManagedProperty(value=“#{user}”)
私人洛根班洛根班;
私人名单用益;
UsuariosEntity user=新的UsuariosEntity();
私有字符串名称;
私人活动;
私人字符串tipo;
私有字符串密码;
私有字符串选择;
私用UIComponentMyButton;
@施工后
公共void init(){
usuariosential usuario=loginBean.getCurrent();
usuarios=newarraylist();
if(通常为.getTipo().equalsIgnoreCase(“Planta”)){
usuarios=UsuariosDAO.getALL();
}否则{
usuarios=UsuariosDAO.getALLbyRol(usuario.getUsuario());
}
}
公共UIComponent getMybutton(){
返回我的按钮;
}
公共void setMybutton(UIComponent mybutton){
this.mybutton=mybutton;
}
公共字符串getSelection(){
返回选择;
}
公共选择(字符串选择){
this.selection=选择;
}
公共字符串getNombre(){
返回nombre;
}
public void setNombre(字符串nombre){
this.nombre=nombre;
}
public int getActivo(){
返回活动;
}
公共无效setActivo(int activo){
this.activo=activo;
}
公共字符串getTipo(){
返回提坡;
}
公共无效设置tipo(字符串tipo){
this.tipo=tipo;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
public LoginBean getLoginBean(){
返回loginBean;
}
公共无效setLoginBean(LoginBean LoginBean){
this.loginBean=loginBean;
}
public UsuariosEntity getUser(){
返回用户;
}
public void setUser(通常是敏感用户){
this.user=用户;
}
公共列表getUsuarios(){
返还利息;
}
公共无效集合(列表集合){
this.usuarios=usuarios;
}
新乌萨里奥()公共无效{
UsuariosEntity user=新的UsuariosEntity();
用户:setIdPlanta(2);
user.setActivo(this.activo);
user.setPassword(this.password);
user.setUsuario(this.nombre);
user.setTipo(此选项);
listusariox=usuarisdao.findbyname(this.nombre);
如果(usuariox.size()==0){
usuarisdao.save(用户);
}否则{
FacesMessage消息=新的FacesMessage(“El usuario ya existe en la base de datos”);
FacesContext context=FacesContext.getCurrentInstance();
addMessage(mybutton.getClientId(context),message);
}
}
公共无效eliminar(内部id_用户){
usuariosential user=UsuariosDAO.find(id\u user);
UsuariosDAO.eliminar(用户);
}
public void onEdit(RowEditEvent事件){
UsuariosDAO.save(((usuariosential)event.getObject());
FacesMessage msg=新的FacesMessage(“Usuario Editado”,((Usuariosential)event.getObject()).getUsuario());
FacesContext.getCurrentInstance().addMessage(null,msg);
}
public void onCancel(RowEditEvent事件){
FacesMessage msg=新的FacesMessage(“Edición Cancelada”,((usuariosential)event.getObject()).getUsuario());
FacesContext.getCurrentInstance().addMessage(null,msg);
}
}
观点:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
template="/Contenido/Template.xhtml"
xmlns:p="http://primefaces.org/ui">
<ui:define name="page-content">
<h:form id="formUsuarios">
<p:growl id="messages" showDetail="true"/>
<p:dataTable id="users" value="#{usuarios.usuarios}" var="o" editable="true" scrollRows="20" scrollable="true" scrollHeight="150" paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<f:facet name="header">Usuarios</f:facet>
<p:ajax event="rowEdit" listener="#{usuarios.onEdit}" update=":formUsuarios:messages" />
<p:ajax event="rowEditCancel" listener="#{usuarios.onCancel}" update=":formUsuarios:messages" />
<p:column headerText="#" style="width:6%">
<h:outputText value=" #{o.idUsuario} "/>
</p:column>
<p:column rendered="#{user.current.tipo.equalsIgnoreCase('planta')}" headerText="Nombre">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{o.usuario}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{o.usuario}" style="width:100%"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Nombre" rendered="#{user.current.tipo.equalsIgnoreCase('productor')||user.current.tipo.equalsIgnoreCase('exportadora')}">
<h:outputText value="#{o.usuario}" />
</p:column>
<p:column rendered="#{user.current.tipo.equalsIgnoreCase('planta')}" headerText="Estado" style="width:6%">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{o.activo}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{o.activo}" style="width:100%"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Password">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="********" />
</f:facet>
<f:facet name="input">
<h:inputSecret value="#{o.password}" style="width:100%"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column rendered="#{user.current.tipo.equalsIgnoreCase('planta')}" headerText="Tipo">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{o.tipo}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{o.tipo}" style="width:100%"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Editar" style="width:6%">
<p:rowEditor />
</p:column>
<p:column headerText="Eliminar Usuario" rendered="#{user.current.tipo.equalsIgnoreCase('planta')}">
<p:commandButton actionListener="#{usuarios.eliminar(o.idUsuario)}" value="Eliminar" process="users" ajax="true"/>
</p:column>
</p:dataTable>
<br/>
</h:form>
<h:form>
<p:panelGrid id="grid" columns="3" rendered="#{user.current.tipo.equalsIgnoreCase('planta')}">
<f:facet name="header">
Crear Usuario
</f:facet>
<h:outputText value="Nombre"/>
<h:inputText id="nombre" label="name" value="#{usuarios.nombre}" required="true" requiredMessage="Debe ingresar un nombre"/>
<h:message for="nombre" style="color:red"/>
<h:outputText value="Contraseña" />
<h:inputText id="pass" label="pasw" value="#{usuarios.password}" required="true" requiredMessage="Debe ingresar una contraseña"/>
<h:message style="color:red" for="pass"/>
<h:outputText value="Tipo"/>
<h:selectOneMenu id="select1" value="#{usuarios.selection}" onchange="submit();" required="true" requiredMessage="Debe seleccionar un tipo de usuario">
<f:selectItem itemValue="Planta" itemLabel="Planta" />
<f:selectItem itemValue="Exportadora" itemLabel="Exportadora" />
<f:selectItem itemValue="Productor" itemLabel="Productor" />
</h:selectOneMenu>
<h:message style="color:red" for="select1"/>
<h:outputText value="Activo"/>
<h:selectOneMenu id="select2" value="#{usuarios.activo}" onchange="submit();" required="true" requiredMessage="Debe seleccionar una opción ">
<f:selectItem itemValue="0" itemLabel="Inactivo" />
<f:selectItem itemValue="1" itemLabel="Activo" />
</h:selectOneMenu>
<h:message style="color:red" for="select2" />
<f:facet name="footer">
<h:commandButton value="Crear" id="mybutton"
binding="#{usuarios.mybutton}"
class="button" action="#{usuarios.newUsuario}">
</h:commandButton>
<h:message style="color:red" for="mybutton" />
</f:facet>
</p:panelGrid>
</h:form>
</ui:define>
</ui:composition>
惯常
克鲁尔·乌萨里奥
更改值所引用的集合不会立即影响数据表,因为显示的值由过滤后的集合存储
1) 如果指定了filteredValue
属性,则应在数据表内容更改后(例如删除行后)手动清除该集合。更新数据表后,它应刷新内容
2) 您可以在dataTable小部件(客户端API)上调用filter()
。它始终有效,但会生成额外的AJAX请求。更改值所引用的集合不会立即影响数据表,因为所显示的值由过滤后的集合存储
1) 如果指定了filteredValue
属性,则应在数据表内容更改后手动清除该集合,例如