Preciso pegar uma linha do datatable para alterar ou excluir. Estou usando o setPropertyActionListener mas está dando erro.
Já olhei em vários tutoriais mas não consigo resolver.
Meu datatable:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Lista de Usuário</title>
<style>
.ui-widget,
.ui-widget .ui-widget {
font-size: 12px !important;
}
</style>
</h:head>
<h:body>
<h:form>
<p:dataTable id="listaUsuario" var="usuario" value="#{usuarioBean.lista}">
<p:column style="width:120px;">
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{usuario.id}"/>
</p:column>
<p:column style="width:120px;">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{usuario.nome}"/>
</p:column>
<p:column style="width:120px;">
<f:facet name="header">
<h:outputText value="Status" />
</f:facet>
<h:outputText value="#{usuario.status}"/>
</p:column>
<p:column style="width:120px;">
<f:facet name="header">
<h:outputText value="E-mail" />
</f:facet>
<h:outputText value="#{usuario.email}"/>
</p:column>
<p:column>
<h:commandLink action="#{usuarioBean.alterar}" value="Editar">
<f:setPropertyActionListener target="#{usuarioBean.usuario}" value="usuario" />
</h:commandLink>
</p:column>
<p:column>
<h:commandLink action="#{usuarioBean.inserir}" value="Excluir">
<f:setPropertyActionListener target="#{usuarioBean.usuario}" value="usuario" />
</h:commandLink>
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
Meu managedBean:
package classe.controle.Beans;
import java.sql.Date;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import classe.modelo.dao.UsuarioDao;
import classe.modelo.vo.Municipio;
import classe.modelo.vo.Usuario;
@ManagedBean(name = "usuarioBean")
@SessionScoped
public class UsuarioBean {
private int id;
private String login;
private String senha;
private String status;
private String cnpjCpf;
private String razaoSocial;
private String nome;
private String inscrEstadual;
private String rg;
private String inscrMun;
private String rua;
private String complemento;
private String numero;
private String bairro;
private int idmunicipio; // campo municipio id
private String cep;
private String telefone;
private String www;
private String email;
private String obs;
private Date dtCadastro;
private String sts;
private int idempresa;
private ArrayList<Usuario> lista;
Usuario usuario = new Usuario();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getCnpjCpf() {
return cnpjCpf;
}
public void setCnpjCpf(String cnpjCpf) {
this.cnpjCpf = cnpjCpf;
}
public String getRazaoSocial() {
return razaoSocial;
}
public void setRazaoSocial(String razaoSocial) {
this.razaoSocial = razaoSocial;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getInscrEstadual() {
return inscrEstadual;
}
public void setInscrEstadual(String inscrEstadual) {
this.inscrEstadual = inscrEstadual;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getInscrMun() {
return inscrMun;
}
public void setInscrMun(String inscrMun) {
this.inscrMun = inscrMun;
}
public String getRua() {
return rua;
}
public void setRua(String rua) {
this.rua = rua;
}
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public int getIdmunicipio() {
return idmunicipio;
}
public void setIdmunicipio(int idmunicipio) {
this.idmunicipio = idmunicipio;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getWww() {
return www;
}
public void setWww(String www) {
this.www = www;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getObs() {
return obs;
}
public void setObs(String obs) {
this.obs = obs;
}
public Date getDtCadastro() {
return dtCadastro;
}
public void setDtCadastro(Date dtCadastro) {
this.dtCadastro = dtCadastro;
}
public String getSts() {
return sts;
}
public void setSts(String sts) {
this.sts = sts;
}
public int getIdempresa() {
return idempresa;
}
public void setIdempresa(int idempresa) {
this.idempresa = idempresa;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public void setLista(ArrayList<Usuario> lista) {
this.lista = lista;
}
public ArrayList<Usuario> getLista() {
lista = UsuarioDao.listar();
return lista;
}
public String inserir() {
usuario.setMunicipio(new Municipio());
usuario.setRazaoSocial(nome);
usuario.setNome(nome);
usuario.setLogin(login);
usuario.setSenha(senha);
usuario.setStatus(status);
usuario.setEmail(email);
usuario.setTelefone(telefone);
usuario.setCnpjCpf(cnpjCpf);
usuario.setRg(rg);
usuario.setRua(rua);
usuario.setComplemento(complemento);
usuario.setNumero(numero);
usuario.setBairro(bairro);
usuario.getMunicipio().setId(idmunicipio);
usuario.setObs(obs);
UsuarioDao usrDao = new UsuarioDao();
try {
Boolean inserir = usrDao.inserir(usuario);
if (inserir != false) {
System.out.println("OK.Graças à Deus e Nossa Senhora!!!");
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public void alterar(Usuario usuario){
System.out.println(this.usuario.getId());
}
}
O problema está no método alterar.
A mensagem é a seguinte:
AVISO: Cannot convert usuario of type class java.lang.String to class classe.modelo.vo.Usuario
java.lang.IllegalArgumentException: Cannot convert usuario of type class java.lang.String to class classe.modelo.vo.Usuario
at org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:374)
at org.apache.el.ExpressionFactoryImpl.coerceToType(ExpressionFactoryImpl.java:46)
at com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler$SetPropertyListener.processAction(SetPropertyActionListenerHandler.java:204)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIData.broadcast(UIData.java:1093)
at org.primefaces.component.datatable.DataTable.broadcast(DataTable.java:630)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)