Clika no nome e excluir - JSF

9 respostas
Deluxe

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…

9 Respostas

CintiaDR

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

ta vo explicar melhor

Pagina Listar (pega os dados do banco e joga aqui na pagina)

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<HTML>
<HEAD>
<title>Lista de Usuarios</title> 
<LINK href="estilo.css" type="text/css" rel="stylesheet">
</HEAD>


<body bgcolor="white">
<center><h2>LISTA DE USUARIOS</h2></center>

<div align=center>	
	<f:view><br><h:dataTable value="#{usuarios.lista}" var="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>
</div>
</body>
</HTML>

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

G

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>
CintiaDR

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

não entedi muito bem

olha só oq eu fiz

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<HTML>
<HEAD>
<title>Lista de Usuarios</title> 
<LINK href="estilo.css" type="text/css" rel="stylesheet">
</HEAD>


<body bgcolor="white">
<center><h2>LISTA DE USUARIOS</h2></center>

<div align=center>	
	<f:view><br><h:dataTable value="#{usuarios.lista}" var="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>
</div>
</body>
</HTML>

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
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<HTML>
<HEAD>
<title>Lista de Usuarios</title> 
<LINK href="estilo.css" type="text/css" rel="stylesheet">
</HEAD>


<body bgcolor="white">
<center><h2>LISTA DE USUARIOS</h2></center>

<div align=center>	
	<f:view><br><h:dataTable value="#{usuarios.lista}" var="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>
</div>
</body>
</HTML>

gero um link excluir pra cada dado
mais quando eu cliko em excluir
da um erro:

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
Deluxe
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();
		}
		
	}

esse é meu metodo remover
tem q mudar algo nele?

G

Para usar numa action o método chamado deve retornar uma String e não deve lançar exceptions.

Kamikaze
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
<h:commandLink ... action="#{usuarioBean.excluir}">
   <f:param name="codigo" value="#{usuario.codigo}"/>
</h:commandLink>

Tente algo como:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<HTML>
<HEAD>
<title>Lista de Usuarios</title> 
<LINK href="estilo.css" type="text/css" rel="stylesheet">
</HEAD>


<body bgcolor="white">
<center><h2>LISTA DE USUARIOS</h2></center>

<div align=center>	
	<f:view><br><h:dataTable value="#{usuarios.lista}" var="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>
</div>
</body>
</HTML>
Criado 28 de maio de 2008
Ultima resposta 28 de mai. de 2008
Respostas 9
Participantes 4