olá,
Estou desenvolvendo um sistema Web utilizando JSF, onde o usuário cadastra seus dados e logo após é enviado um email com um link para ativar a conta.
Até essa parte tá tudo certo.
Minha dúvida é, quando o usuário clicar no link (no seu email) eu devo direcionar esse link para onde ??
Diretamente para o Managed Bean responsável ???
Ou para uma página e consequentemente essa página reencaminha para o MB ???
Aceito sugestões.
[quote=ricardo13]olá,
Estou desenvolvendo um sistema Web utilizando JSF, onde o usuário cadastra seus dados e logo após é enviado um email com um link para ativar a conta.
Até essa parte tá tudo certo.
Minha dúvida é, quando o usuário clicar no link (no seu email) eu devo direcionar esse link para onde ??
Diretamente para o Managed Bean responsável ???
Ou para uma página e consequentemente essa página reencaminha para o MB ???
Aceito sugestões.
[/quote]
Talvez utilizar o próprio link mesmo tipo http://host/aplicacao/ativador/154866468754867 e utilize um MB próprio só para ativar. Pra url amigáveis com JSF eu já usei o pretty faces e gostei.
vc deve criar um link com um id na sessão para identificar esse usuário…enviando direto para o MB…
Assim o MB vai buscar esse usuário e fazer o q tem que fazer…
Senão como vc irá identificar cada usuário?!?
Blz !!
Eu fiz isso. Criei uma URL com ID do usuário, mas minha dúvida é, como eu chamo diretamente o MB.
Por exemplo, se eu tiver um MB chamado AtivaUsuarioMB como minha URL tem que estar para chamar esse cara.
http://localhost/app/AtivaUsuarioMB?id=as98d7asdfs8a ??
[quote=ricardo13]Blz !!
Eu fiz isso. Criei uma URL com ID do usuário, mas minha dúvida é, como eu chamo diretamente o MB.
Por exemplo, se eu tiver um MB chamado AtivaUsuarioMB como minha URL tem que estar para chamar esse cara.
http://localhost/app/AtivaUsuarioMB?id=as98d7asdfs8a ??[/quote]
Bem utilizando o pretty faces (url amigáveis com JSF) fica mais ou menos assim:
Você tem um arquivo XML onde você configura a url com os bindings necessários.
<url-mapping id="verNoticia">
<pattern>/ativar/#{myBean.usuario.id}/</pattern>
<view-id>/ativar.xhtml</view-id>
<action>#{myBean.ativar}</action>
</url-mapping>
Você diz o padrão de url que irá usar tipo ali ficaria algo como : http://localhost/app/ativar/12345465478678/ quando a pessoa clicar nesse link vai ser chamado o action ativar do managedbean myBean já com usuario.id setado com o valor da url, simples assim.
olá,
Valeu pela dica, mas e se eu não usar pretty faces ??
Usar JSF sem pretty faces, ou prime faces, ou rich faces.
Como eu acesso o MB.
Tem que configurar no faces-config.xml ??
Tem alguma configuração para usar Pretty Faces com Rich Faces ??
Fui subir a aplicação e deu problema.
Configurei o web.xml e o pretty-config.xml.
[quote=ricardo13]Tem alguma configuração para usar Pretty Faces com Rich Faces ??
Fui subir a aplicação e deu problema.
Configurei o web.xml e o pretty-config.xml.
[/quote]
Qual erro deu?
Can’t parse configuration file: jar:file:/C:/Program%20Files/Apache%20Software%20Foundation/Apache%20Tomcat%206.0.26/webapps/concurso/WEB-INF/lib/ocpsoft-pretty-faces-2.0.3.jar!/META-INF/faces-config.xml: Error at line 7 column 16: cvc-elt.1: Cannot find the declaration of element ‘faces-config’.
web.xml:
<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Alguém tem alguma idéia do q possa estar acontecendo ??
Já troquei de versão do Pretty faces e nada mudou.
[quote=ricardo13]Alguém tem alguma idéia do q possa estar acontecendo ??
Já troquei de versão do Pretty faces e nada mudou.[/quote]
A versão que usas é http://ocpsoft.com/repository/com/ocpsoft/prettyfaces-jsf12/3.2.0/prettyfaces-jsf12-3.2.0.jar ? (alias a versão do jsf que está usando é 1.2?)
Realmente.
O problema era que eu estava usando versão do Pretty Faces recente para a versão 1.2 do JSF.
Agora vou testar a aplicação para ver se funciona eu chamar o MB.
olá,
Ainda não tô conseguindo acessar meu MB diretamente.
Eu to tentando acessar meu MB através da seguinte URL: http://localhost:8080/sistema/ativar/123, onde 123 é o ID do meu usuário.
o pretty-config.xml:
<pretty-config xmlns="http://ocpsoft.com/prettyfaces-xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.com/prettyfaces-xsd http://ocpsoft.com/xml/ns/prettyfaces/pretty-1.0.xsd">
<url-mapping id="ativar">
<pattern>/ativar/#{UsuarioMB.Id}</pattern>
<action>#{UsuarioMB.ativarUsuario}</action>
</url-mapping>
</pretty-config>
O que eu to fazendo de errado para não acessar meu MB ?
[quote=ricardo13]olá,
Ainda não tô conseguindo acessar meu MB diretamente.
Eu to tentando acessar meu MB através da seguinte URL: http://localhost:8080/sistema/ativar/123, onde 123 é o ID do meu usuário.
o pretty-config.xml:
<pretty-config xmlns="http://ocpsoft.com/prettyfaces-xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.com/prettyfaces-xsd http://ocpsoft.com/xml/ns/prettyfaces/pretty-1.0.xsd">
<url-mapping id="ativar">
<pattern>/ativar/#{UsuarioMB.Id}</pattern>
<action>#{UsuarioMB.ativarUsuario}</action>
</url-mapping>
</pretty-config>
O que eu to fazendo de errado para não acessar meu MB ?[/quote]
Esse mb UsuarioMB existe lá em faces-config ou ele é do applicationContext? Se existe no faces-config e for possível poste a tag que cria ele aqui.
Eu crio este MB com a annotation @Component(usuarioMB)
Então você está usando o spring pra isso… eu acho que o PrettyFaces não consegue pegar o managebean desse contexto, você vai ter que declar-lo no faces-config. Experimente declarar esse bean no faces-config e diga o que acontece.
No pretty-config.xml eu coloco o nome da Classe ou o nome da variável que o Spring cria.
Por exemplo, UsuarioMB ou usuarioMB ??
<pattern>/sistema/ativar/#{usuarioMB.Id}</pattern>
<view-id>/index_logado.jsf</view-id>
<action>#{usuarioMB.ativarUsuario}</action>
ou
<pattern>/sistema/ativar/#{UsuarioMB.Id}</pattern>
<view-id>/index_logado.jsf</view-id>
<action>#{UsuarioMB.ativarUsuario}</action>
[quote=ricardo13]No pretty-config.xml eu coloco o nome da Classe ou o nome da variável que o Spring cria.
Por exemplo, UsuarioMB ou usuarioMB ??
<pattern>/sistema/ativar/#{usuarioMB.Id}</pattern>
<view-id>/index_logado.jsf</view-id>
<action>#{usuarioMB.ativarUsuario}</action>
ou
<pattern>/sistema/ativar/#{UsuarioMB.Id}</pattern>
<view-id>/index_logado.jsf</view-id>
<action>#{UsuarioMB.ativarUsuario}</action>
[/quote]
usuarioMB!
Como deve ser a assinatura do meu método ??
Pode ter parâmetro de entrada ??
...
public void ativarUsuario(String id) { /* lógica */}
...
ou
...
public void ativarUsuario() { /* lógica */}
...
public String ativarUsuario() { /* lógica */}
O id será atribuído ao método
public void setId(int id){/*lógica*/}
Inclusive acho que deveria usar o id (minúsculo) ao invés de Id.
#{usuarioMB.id}