[RESOLVIDO] commandlink (CommandButton) não chama método na Bean

Olá pessoal, sou novo com programação java e estou com um probleminha

Na minha página eu tenho um datatable onde mostra uma data uma descrição da data e um commandlink para fazer exclusão no banco da dados, porém ele não chama o meu método de exclusão na minha classe Bean.
Estou usando o JSF 1.2
Meu XHTML

<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">

		<h:dataTable var="feriado" value="#{pesqFeriadoBean.resultadoBusca}" border="1">
			<h:column>
				<f:facet name="header">Descrição</f:facet>
				#{feriado.descricao}
			</h:column>
			<h:column>
				<f:facet name="header">Data</f:facet>
				<h:outputText value="#{feriado.dataFeriado.time}">
					<f:convertDateTime pattern="dd/MM/yyyy" />
				</h:outputText>
			</h:column>
			<h:column>
				<f:facet name="header"></f:facet>
				<h:form>
					<h:commandLink action="#{pesqFeriadoBean.excluir}" value="Excluir">
						<f:setPropertyActionListener target="#{pesqFeriadoBean.feriado}" value="#{feriado}"/>
					</h:commandLink>
				</h:form>
			</h:column>
		</h:dataTable>	
</html>

Meu Bean


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;


@ManagedBean(name = "pesqFeriadoBean")
@ViewScoped

public class PesqFeriadoBean {

	private String descricao;
	private String filtroDescricao;	
	private String data;
	private String filtroData;
	private List<Feriado> resultadoBusca;
	private Feriado feriado;
...
...
public void excluir() {
		FeriadoDAOImpl dao = new FeriadoDAOImpl();
		dao.makeTransient(feriado);
	}

Olá colega,

Acho que seu método excluir deveria receber por parametro o que você deseja excluir.

O método de uma action deve retornar uma String e não receber parâmetros.

public String excluir() {  
        FeriadoDAOImpl dao = new FeriadoDAOImpl();  
        dao.makeTransient(feriado);  

        return "";
    }  

Aconselho você estudar um pouco mais JSF e entender sua peculiaridades.

Tem vários materiais gratuitos na internet.

[quote=brunorota]O método de uma action deve retornar uma String e não receber parâmetros.

public String excluir() {  
        FeriadoDAOImpl dao = new FeriadoDAOImpl();  
        dao.makeTransient(feriado);  

        return "";
    }  

Aconselho você estudar um pouco mais JSF e entender sua peculiaridades.

Tem vários materiais gratuitos na internet.
[/quote]

Entaum Bruno, eu cai meio de paraquedas nisso…

Testei como você passou mas mesmo assim continua com o problema…

Valeu…

Tentou <f:param name=“country” value=“United States” /> no lugar do setPropertyActionListener?

Coloca o form fora do dataTable, ok?

<h:form>
<h:dataTable var="feriado" value="#{pesqFeriadoBean.resultadoBusca}" border="1">  
            <h:column>  
                <f:facet name="header">Descrição</f:facet>  
                #{feriado.descricao}  
            </h:column>  
            <h:column>  
                <f:facet name="header">Data</f:facet>  
                <h:outputText value="#{feriado.dataFeriado.time}">  
                    <f:convertDateTime pattern="dd/MM/yyyy" />  
                </h:outputText>  
            </h:column>  
            <h:column>  
                <f:facet name="header"></f:facet>    
                    <h:commandLink action="#{pesqFeriadoBean.excluir}" value="Excluir">  
                        <f:setPropertyActionListener target="#{pesqFeriadoBean.feriado}" value="#{feriado}"/>  
                    </h:commandLink>  
            </h:column>  
        </h:dataTable> 
</h:form>

Galera testei os dois e não deu certo…

Esse negócio ta me deixando maluco…kkkkk

Pessoal consegui resolver.

vou só trocar o @ViewScope por @@SessionScoped

Ta funcionando agora.

Valeu…

[quote=felipe_fcg]Pessoal consegui resolver.

vou só trocar o @ViewScope por @@SessionScoped

Ta funcionando agora.

Valeu…[/quote]

cara que má prática é essa!
faça isso não!!
tadin do teu servidor!

Pq não usa o ActionListener pra fazer isso ao invés do action? :slight_smile:
e recarregue a tela com ajax update=“tabela”
:wink: