Clika no nome e excluir - JSF

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…

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.

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…

[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]

[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]