Boa noite!
Estou ha um tempo aqui tentando ver porque não está deletando um registro e gostaria de uma ajudinha ai pra desempacar nisso
Quando clico pra deletar ele passa por tudo e até mostra mensagem que foi deletado, mas no debug ele não pega o registro selecionado… fica tudo em null…mas nao acho o erro e para editar e inserir está tudo ok… quem puder me ajudar ai por favor… valeu
Estou usando hibernate, jsf, primefaces e spring security
ChangesDaoImpl
public class ChangesDaoImpl implements ChangesDao {
@Override
public void inserir(Changes changes) {
Session session = HibernateUtil.getSessionFactory().openSession();
try {
session.beginTransaction();
session.save(changes);
session.beginTransaction().commit();
} catch (Exception e){
System.out.println("Erro ao inserir: "+e.getMessage());
session.beginTransaction().rollback();
}
}
@Override
public void excluir(Changes changes) {
Session session = HibernateUtil.getSessionFactory().openSession();
try {
session.beginTransaction();
session.delete(changes);
session.beginTransaction().commit();
} catch (Exception e){
System.out.println("Erro ao excluir: "+e.getMessage());
session.beginTransaction().rollback();
}
}
ChangesBean
@ManagedBean(name="changesBean")
@SessionScoped
public class ChangesBean {
private Changes change;
private List<Changes> changes;
public ChangesBean() {
change = new Changes();
}
public void prepararInserir(){
change = new Changes();
}
public void prepararAtualizar(Integer id){
ChangesDao changesDao = new ChangesDaoImpl();
change = changesDao.buscarPorId(id);
}
public void inserir(){
ChangesDao changesDao = new ChangesDaoImpl();
changesDao.inserir(change);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Change successfully added."));
change = new Changes();
}
public void excluir(){
ChangesDao changesDao = new ChangesDaoImpl();
changesDao.excluir(change);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Change successfully deleted."));
change = new Changes();
}
public Changes getChange() {
return change;
}
public void setChange(Changes change) {
this.change = change;
}
public List<Changes> getChanges() {
ChangesDao changesDao = new ChangesDaoImpl();
changes = changesDao.buscarTodos();
return changes;
}
private List<Changes> filteredChanges;
public List<Changes> getFilteredChanges() {
return filteredChanges;
}
public void setFilteredChanges(List<Changes> filteredChanges) {
this.filteredChanges = filteredChanges;
}
}
xhtml
<h:form id="frmChanges">
<p:dataTable id="datatable" var="change" value="#{changesBean.changes}" emptyMessage="No changes found."
paginator="true" rows="10" paginatorPosition="bottom" rowKey="#{change.id}" selectionMode="single"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<f:facet name="header">
Search changes
</f:facet>
<p:column headerText="Change no." filterBy="#{change.changeNumber}">
<h:outputText value="#{change.changeNumber}" />
</p:column>
//restante dos dados que aparecem na tabela
<p:column style="width:11%; text-align: center" >
<p:commandButton update=":frmView:pgView, :frmView:pgView1" oncomplete="dlgView.show()" image="icon-view" title="View" actionListener="#{changesBean.prepararAtualizar(change.id)}"/>
<sec:authorize ifAnyGranted="ROLE_ACC, ROLE_ADMIN">
<p:commandButton update=":frmEdit:pgEdit, :frmEdit:pgEdit1" actionListener="#{changesBean.prepararAtualizar(change.id)}"
oncomplete="dlgEdit.show()" image="icon-edit" title="Edit"/>
</sec:authorize>
<sec:authorize ifAnyGranted="ROLE_ANA, ROLE_ADMIN">
<p:commandButton update=":frmEditipc:pgEditipc" actionListener="#{changesBean.prepararAtualizar(change.id)}"
oncomplete="dlgEditipc.show()" image="icon-edit" title="Edit"/>
<p:commandButton update=":frmDelete" oncomplete="dlgDelete.show()" image="icon-delete" title="Delete"/>
</sec:authorize>
</p:column>
</p:dataTable>
</h:form>
<!-- Formulário: excluir -->
<h:form id="frmDelete">
<p:growl id="growlDelete" sticky="true" />
<p:confirmDialog id="dlgDelete" message="Delete this change?"
header="Delete Change" severity="alert" widgetVar="dlgDelete">
<p:commandButton value=" Delete" update=":frmChanges:datatable, growlDelete, dlgDelete"
actionListener="#{changesBean.excluir()}" oncomplete="dlgDelete.hide()" image="icon-save"/>
<p:commandButton value=" Cancel" update=":frmChanges:datatable" oncomplete="dlgDelete.hide()"
image="icon-cancel"/>
</p:confirmDialog>
</h:form>