Erro na Exclusão com JSF

5 respostas
marceloborth

Pessoal, não estou conseguindo excluir os dados de uma tabela. estou usando JSF, e a query está correta, porém o parametro passado para o backing bean sempre vem zerado...

Segue a lista de entidades.jsp

<f:view>
   <h:form>
      <h:dataTable value="#{entidadeBean.entidades}" var="entidade">
         <f:facet name="header">
            <h:outputText escape="false" style="color: red;" value="Entidades" />
         </f:facet>
         
         <h:column>
            <f:facet name="header">
               <h:outputText escape="false" value="<b>Entidade: </b>" />
            </f:facet>
            <h:commandLink action="#{entidadeBean.editar}" styleClass="link">
               <h:outputText escape="false" value="#{entidade.nome}" />
            </h:commandLink>
         </h:column>
         
         <h:column>
            <f:facet name="header">
               <h:outputText escape="false" value="Excluir: " />
            </f:facet>
            <h:commandButton action="#{entidadeBean.excluir}" value="Excluir" styleClass="botaoPadrao" />
         </h:column>
         
      </h:dataTable>
   </h:form>
</f:view>

Em todos os casos o resultado da query de execlusão é: "delete from entidade where cd_entidade = 0"

Obrigado...

Marcelo Borth

5 Respostas

ercardoso

Esse entidadeBean.entidades retorna um List de que? qual o objeto?
e como vc estah escrevendo o metodo excluir?

marceloborth
  1. Retorna um List de Entidade.
    Eu só não estou conseguindo receber o parametro codigo

meu commandButton está assim:

<h:commandButton action="#{entidadeBean.excluir}" value="Excluir">
                            <f:param name="codigo" value="#{entidade.codigo}" />
                        </h:commandButton>

no bean.

try {
            ExternalContext eCtx = FacesContext.getCurrentInstance().getExternalContext();
            Long codigo = Long.valueOf((String) eCtx.getRequestParameterMap().get("codigo"));
            
            EntidadeDao dao = new EntidadeDao();
            Entidade e = new Entidade();
            
            e.setCodigo( codigo );
            return (dao.delete(e)) ? "sucessoExclusao" : "falhaExclusao";
            
        } catch (SQLException sqlex) {
            sqlex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
        return "falhaExclusao";
ercardoso

nao implemento os parametros dessa forma, mas você pode usar a tag
<f:setPropertyActionListener/> se estiver usando a versao 1.2 , tem tambem o tomahawk <t:updateActionListener> que tem a mesma solução.

vlw’s

marceloborth

Mas pq não usar <f:param> … alguma particularidade ??
segurança de transferencia dos dados ??

ercardoso

Não sei em termo de performace ou segurança qual é o melhor, mais vejo que eh muito mais simples e pratico utilizar o tomahawk.

Criado 28 de setembro de 2006
Ultima resposta 28 de set. de 2006
Respostas 5
Participantes 2