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);
}
kdashu
Novembro 22, 2012, 3:30pm
#2
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…
walacy
Novembro 22, 2012, 4:30pm
#5
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?
e recarregue a tela com ajax update=“tabela”