Estou com um problema no jsF. Quando clico no link remover de um dataTable ele remove do banco, mas não da tela, na tela ele só remove quando eu clico outra vez… ou volto a mesma tela.
jsp
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib
uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<f:view><h:form>
Cargo:
<h:selectOneMenu value="#{bTitulacao.cargoid}">
<f:selectItems value="#{bCargo.listarCargos}"/>
</h:selectOneMenu>
<br>Titulação:<h:inputText value="#{bTitulacao.descricao}"></h:inputText><br>
Pontos:<h:inputText value="#{bTitulacao.pontos}"></h:inputText><br>
<h:commandButton value="Salvar" actionListener="#{bTitulacao.salvar}" onclick="submit();"></h:commandButton>
<rich:dataTable id="listagemct" value="#{bTitulacao.cargosTitulacao}" var="ct" >
<h:column id="cargo">
<f:facet name="header">
<h:outputText value="Cargo"></h:outputText>
</f:facet>
<h:outputText value="#{ct.cargo.descricao}"></h:outputText>
</h:column>
<h:column id="titulacao">
<f:facet name="header">
<h:outputText value="Titulação"></h:outputText>
</f:facet>
<h:outputText value="#{ct.titulacao.descricao}"></h:outputText>
</h:column>
<h:column id="pontos">
<f:facet name="header">
<h:outputText value="Pontos"></h:outputText>
</f:facet>
<h:outputText value="#{ct.titulacao.pontos}"></h:outputText>
</h:column>
<h:column id="remover">
<f:facet name="header">
<h:outputText value="Remover"></h:outputText>
</f:facet>
<h:commandLink actionListener="#{bTitulacao.deletar}" styleClass="link_geral" onclick="submit();" immediate="true">
<h:outputText value="Remover"> </h:outputText>
<f:param id="cargoTitulacaoid" value="#{ct.id}"/>
</h:commandLink>
</h:column>
</rich:dataTable>
</h:form></f:view></body>
</html>
bean
package br.faetec.cadtemp.bean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.hibernate.Session;
import br.faetec.cadtemp.dao.Dao;
import br.faetec.cadtemp.hibernate.HibernateUtil;
import br.faetec.cadtemp.model.Cargo;
import br.faetec.cadtemp.model.Cargo_titulacao;
import br.faetec.cadtemp.model.Titulacao;
public class TitulacaoBean {
Titulacao titulacao = new Titulacao();
int cargoid;
String descricao;
int pontos;
CargoTitulacaoBean ctBean= new CargoTitulacaoBean();
List <Cargo_titulacao> cargosTitulacao = ctBean.listarCargosTitulacao();
public List<Cargo_titulacao> getCargosTitulacao() {
return cargosTitulacao;
}
public void setCargosTitulacao(List<Cargo_titulacao> cargosTitulacao) {
this.cargosTitulacao = cargosTitulacao;
}
public int getPontos() {
return pontos;
}
public void setPontos(int pontos) {
this.pontos = pontos;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getCargoid() {
return cargoid;
}
public void setCargoid(int cargoid) {
this.cargoid = cargoid;
}
public void salvar(ActionEvent ev){
Cargo_titulacao ct= new Cargo_titulacao();
String retorno=null;
Session session= HibernateUtil.getSession();
session= HibernateUtil.getSession();
session.beginTransaction();
Titulacao titulacao= new Titulacao();
titulacao.setDescricao(descricao);
titulacao.setPontos(pontos);
new Dao<Titulacao>(session,Titulacao.class).adiciona(titulacao);
session.getTransaction().commit();
Cargo cargo= new Dao<Cargo>(session,Cargo.class).procura(cargoid);
ct.setCargo(cargo);
ct.setTitulacao(titulacao);
new Dao<Cargo_titulacao>(session,Cargo_titulacao.class).adiciona(ct);
//new Dao<Titulacao>(session,Titulacao.class).
cargosTitulacao.add(ct);
System.out.println("cadastro de titulacao efetuado com sucesso");
System.out.println("Inseridos: "+ct.getCargo().getDescricao());
session.close();
}
public void deletar(ActionEvent ev){
FacesContext fc = FacesContext.getCurrentInstance();
UIParameter parametroid = (UIParameter) ev.getComponent().findComponent("cargoTitulacaoid");
int cargoTitulacaoid= Integer.parseInt(parametroid.getValue().toString());
System.out.println("DELETANDO>>>"+cargoTitulacaoid);
Session session= HibernateUtil.getSession();
session= HibernateUtil.getSession();
session.beginTransaction();
Cargo_titulacao ct= new Dao<Cargo_titulacao>(session,Cargo_titulacao.class).procura(cargoTitulacaoid);
int index = cargosTitulacao.indexOf(ct);
cargosTitulacao.remove(ct);
new Dao<Cargo_titulacao>(session,Cargo_titulacao.class).remove(ct);
session.flush();
session.close();
}
public Titulacao getTitulacao() {
return titulacao;
}
public void setTitulacao(Titulacao titulacao) {
this.titulacao = titulacao;
}
}
Valeu ai a todos que ajudarem.
