CintiaDR 28 de mai. de 2008
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 28 de mai. de 2008
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
gilberto.souza 28 de mai. de 2008
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 28 de mai. de 2008
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 28 de mai. de 2008
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 28 de mai. de 2008
<% @ 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 28 de mai. de 2008
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?
gilberto.souza 28 de mai. de 2008
Para usar numa action o método chamado deve retornar uma String e não deve lançar exceptions.
Kamikaze 28 de mai. de 2008
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>