Deluxe
Maio 28, 2008, 10:54am
#1
Galera me da uma ajuda…
Tenho uma pagina que lista todos os usuarios do banco …
eu coloquei como listar os usuarios como link…
queria saber como eu faço a pagina para junto do nome gerar um link excluir do lado, equando clikar em excluir ele excluir do banco essa pessoa…
Seu problema é fazer um botão em JSF? [google]JSF button[/google]
Se não é este seu problema, explique melhor, porque mexer no banco você deve saber…
Deluxe
Maio 28, 2008, 12:13pm
#3
ta vo explicar melhor
Pagina Listar (pega os dados do banco e joga aqui na pagina)
[code]
<%@ taglib uri=“http://java.sun.com/jsf/core ” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html ” prefix=“h” %>
Lista de Usuarios
LISTA DE USUARIOS
<h:column>
| ID: | <h:outputText value="#{usuarios.idUsuario}"/>
</h:column>
<h:column>
Login: |<h:outputText value="#{usuarios.nome}"/>
</h:column>
<h:column>
Nome:|<h:outputText value="#{usuarios.login}"/>
</h:column>
</h:dataTable>
</f:view>
[/code]
quando eu executo isso.
ela imprimi todo os dados do banco (id, nome, login)
meu problema é
queria pra nessa pagina
gerar esses nomes como link, e gerar um link excluir do lado de cada ID, pro usuario clikar em Excluir e excluir o dado desejado. E se o usuario clikar em cima do nome, ele chamar a pagina para fazer Alteração…
eu ja tenho os metodos prontos, so to em duvida como fazer as paginas jsf
Crie um command link e aponte a action para o método do seu managed bean que controla a exclusão de usuários.
Você pode passar o usuário que deseja excluir enviando um parâmetros de requisição com <f:param …/>
<h:commandLink ... action="#{usuarioBean.excluir}">
<f:param name="codigo" value="#{usuario.codigo}"/>
</h:commandLink>
Lembrando sempre que “aparenta” que commandLink não funciona dentro de Datatable se o bean for de request. (Na verdade, é um erro de conceito nosso)
No blog do Urubatan tem detalhes sobre isto.
Deluxe
Maio 28, 2008, 12:39pm
#6
não entedi muito bem
olha só oq eu fiz
[code]
<%@ taglib uri=“http://java.sun.com/jsf/core ” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html ” prefix=“h” %>
Lista de Usuarios
LISTA DE USUARIOS
<h:column>
Login:
<h:form>
<h:commandLink value="#{usuarios.nomes}"/>
</h:form></h:column>
<h:column>
Nome:
<h:form>
<h:commandLink value="#{usuarios.login}"/>
</h:form></h:column>
<h:column>
<h:form>
<h:commandLink value="Excluir" />
</h:form></h:column>
</h:dataTable>
</f:view>
[/code]
Agora ta saindo todo os Dados como link e ta saindo um link Excluir do lado de cada dado…
se a pessoa quiser excluir o dado desejado, basta ela ir no link excluir do lado do dado e excluir…
como ficaria ai ?
ja tenho o metodo excluir pronto… que aceita o nome para exclusão…
Deluxe
Maio 28, 2008, 1:37pm
#7
[code]
<%@ taglib uri=“http://java.sun.com/jsf/core ” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html ” prefix=“h” %>
Lista de Usuarios
LISTA DE USUARIOS
<h:column>
Login: |<h:outputText value="#{usuarios.nome}"/>
</h:column>
<h:column>
Nome:<h:outputText value="#{usuarios.login}"/>
</h:column>
<h:column>
<h:form>
<h:commandLink value="Excluir" action="#{usuarios.remover}">
<f:param name="nome" value="#{usuarios.nome}"></f:param>
</h:commandLink>
</h:form></h:column>
</h:dataTable>
</f:view>
[/code]
gero um link excluir pra cada dado
mais quando eu cliko em excluir
da um erro:
[code]
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: #{usuarios.remover}: javax.faces.el.MethodNotFoundException: remover: javax.faces.model.ResultSetDataModel$ResultSetMap.remover()
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
root cause
javax.faces.FacesException: #{usuarios.remover}: javax.faces.el.MethodNotFoundException: remover: javax.faces.model.ResultSetDataModel$ResultSetMap.remover()
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
javax.faces.component.UICommand.broadcast(UICommand.java:312)
javax.faces.component.UIData.broadcast(UIData.java:657)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
root cause
javax.faces.el.MethodNotFoundException: remover: javax.faces.model.ResultSetDataModel$ResultSetMap.remover()
com.sun.faces.el.MethodBindingImpl.method(MethodBindingImpl.java:206)
com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:124)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
javax.faces.component.UICommand.broadcast(UICommand.java:312)
javax.faces.component.UIData.broadcast(UIData.java:657)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
Apache Tomcat/6.0.16[/code]
Deluxe
Maio 28, 2008, 1:41pm
#8
[code]
public void remover () throws InstantiationException, IllegalAccessException{
Connection cn = Conexao.obterConexao();
PreparedStatement pst = null;
try{
pst = cn.prepareStatement("delete from usuarios where nome=?");
pst.setString(1, nome);
pst.executeUpdate();
status = nome + " Excluido com Sucesso ";
}
catch (SQLException e ){
status = " Falha na inclusão: " + e.getMessage();
}
}
[/code]
esse é meu metodo remover
tem q mudar algo nele?
Para usar numa action o método chamado deve retornar uma String e não deve lançar exceptions.
[quote=gilberto.souza]Crie um command link e aponte a action para o método do seu managed bean que controla a exclusão de usuários.
Você pode passar o usuário que deseja excluir enviando um parâmetros de requisição com <f:param …/>
[code]
<h:commandLink … action="#{usuarioBean.excluir}">
<f:param name=“codigo” value="#{usuario.codigo}"/>
</h:commandLink>
[/code][/quote]
Tente algo como:
[code]
<%@ taglib uri=“http://java.sun.com/jsf/core ” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html ” prefix=“h” %>
Lista de Usuarios
LISTA DE USUARIOS
<h:column>
| ID: | <h:outputText value="#{usuarios.idUsuario}"/>
<h:commandLink ... action="#{usuarioBean.excluir}">
<f:param name="idUsuario" value="#{usuarios.idUsuario}"/>
</h:commandLink>
</h:column>
<h:column>
Login: |<h:outputText value="#{usuarios.nome}"/>
</h:column>
<h:column>
Nome:|<h:outputText value="#{usuarios.login}"/>
</h:column>
</h:dataTable>
</f:view>
[/code]