rjdiogo
Novembro 10, 2008, 3:54pm
#1
Ola eu andei pesquisando a respeito da minha dúvida e achei coisas similares, mas não entendi direito, então ai vai a minha dúvida:
eu tenho uma datatable e nela eu tenho a opção de excluir um registro.
ex:
[code]<h:dataTable value="#{cliente.list}" border=“1” var=“cli” styleClass=“tabela” headerClass=“corsim” rowClasses=“cornao;corsim”>
<h:column>
<f:facet name=“header”>
<h:outputText value=“Pedido”/>
</f:facet>
<h:outputText value="#{cli.cod_cli}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value="#{cli.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CNPJ"/>
</f:facet>
<h:outputText value="#{cli.cnpj}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Inscrição Estadual"/>
</f:facet>
<h:outputText value="#{cli.ins_estadual}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Telefone"/>
</f:facet>
<h:outputText value="#{cli.tel}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Endereço"/>
</f:facet>
<h:outputText value="#{cli.ende}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Excluir livro"/>
</f:facet>
<h:commandLink action="#{cliente.exclui}" value="Excluir"/>
</h:column>
</h:dataTable>[/code]
eu não estou sabendo configurar o excluir no meu faces-config. esse método exclui está no DaoCliente.
Se eu não fui claro é só perguntar falou!
vc tem que pegar o objeto selecionado da lista…e manda excluir o objeto…
posta ai o ocidgo da sua action!
qual o tipo de lista vc esta passando pra tela?
rjdiogo
Novembro 10, 2008, 5:55pm
#3
public static void exclui(Cliente cli)throws Exception{
open();
stmt = con.prepareStatement("delete from vendedor where cod = ?");
stmt.setString(1, cli.getCod_cli());
stmt.execute();
}
eu vou ter que ter um método getrowdata() ne? como eu faço a implementação dele?
a lista que eu passo e uma List normal.
[code]public class Cliente{
private String cod_cli;
private String nome;
private String cnpj;
private String ins_estadual;
private String tel;
private String ende;
private List list;
public Cliente(String cod_cli, String nome, String cnpj, String ins_estadual, String tel, String ende, List list) {
this.cod_cli = cod_cli;
this.nome = nome;
this.cnpj = cnpj;
this.ins_estadual = ins_estadual;
this.tel = tel;
this.ende = ende;
this.list = list;
}
public Cliente(){
}
public String getCod_cli(){
return cod_cli;
}
public void setCod_cli(String cod_cli){
this.cod_cli = cod_cli;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public String getIns_estadual() {
return ins_estadual;
}
public void setIns_estadual(String ins_estadual) {
this.ins_estadual = ins_estadual;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEnde() {
return ende;
}
public void setEnde(String ende) {
this.ende = ende;
}
public List getList() throws Exception{
return DaoCliente.consultaGeral();
}
public void setList(List list) {
this.list = list;
}
}[/code]
thimor
Novembro 10, 2008, 7:24pm
#4
na sua datatable voce coloca uma coluna com esse codigo:
<h:commandLink action="#{grupo.destroy}" onclick="if (!confirm('Deseja Excluir?')) return false" value="Excluir">
<f:param name="jsfcrud.currentGrupo" value="#{grupo.asString[item]}"/>
</h:commandLink>
agora na sua classe de gerenciamendo do objeto cria um metodo assim
[code]public String destroy() {
grupo = getGrupoFromRequest();
if (grupo == null) {
addErrorMessage(“O grupo selecionado não existe!”);
return listSetup();
}
EntityManager em = getEntityManager();
try {
utx.begin();
grupo = em.getReference(grupo.getClass(), grupo.getGrupoID());
em.remove(grupo);
utx.commit();
addSuccessMessage(“Grupo excluído com sucesso.”);
} catch (Exception ex) {
try {
ensureAddErrorMessage(ex, “Erro ao tentar gravar registro.”);
utx.rollback();
} catch (Exception e) {
ensureAddErrorMessage(e, “Erro durante a transação.”);
}
return null;
} finally {
em.close();
}
return “sucesso”;
}
private Grupo getGrupoFromRequest() {
String theId = getRequestParameter("jsfcrud.currentGrupo");
return (Grupo) new GrupoConverter().getAsObject(FacesContext.getCurrentInstance(), null, theId);
}
public static void addErrorMessage(String msg) {
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
FacesContext.getCurrentInstance().addMessage(null, facesMsg);
}
public static void addSuccessMessage(String msg) {
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
FacesContext.getCurrentInstance().addMessage("successInfo", facesMsg);
}
[/code]
rjdiogo
Novembro 10, 2008, 7:45pm
#5
Aminha datatable vai ter uma coluna com o link excluir ai clicando nela exclui o registro, ou seja, só vai dar pra excluir algo se houver um registro acho q não precisa perguntar se há algo gravado no banco de dados
entao thimor eu so vou precisar disso?
[code]public String destroy() {
utx.begin();
grupo = em.getReference(grupo.getClass(), grupo.getGrupoID());
em.remove(grupo);
utx.commit();
addSuccessMessage(“Grupo excluído com sucesso.”);
return “sucesso”;
}
public static void addSuccessMessage(String msg) {
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
FacesContext.getCurrentInstance().addMessage(“successInfo”, facesMsg);
}[/code]
me desculpem a burrice, mas de que tipos são as variáveis ‘grupo’, ‘utx’ e ‘em’ ?
e esse código do thimor seria colocado na classe DAO certo? ou no MBean? :?:
rjdiogo
Novembro 12, 2008, 7:32am
#8
Como assim variáveis de grupo gustavo?
Esse código vai na minha dao como o meu método de exclusão…
no final das contas eu acabei resolvendo de uma forma diferente. Eu criei uma classe controller pra poder gerenciar a minha classe dao de forma que o jsf só pode acessar os métodos da classe dao através dessa classe controller.
não. variáveis de grupo não.
no seu código têm três variáveis que são nomeadas de
grupo
utx
em
elas são usadas , chamando uns métodos. mas tudo bem, não tem muita importância agora.
e realmente, fica mais conveniente com um controlador.