Ativação de Conta

19 respostas
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.

19 Respostas

dreampeppers99

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.

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.

caputojf1

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?!?

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

dreampeppers99

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

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.

ricardo13

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

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.

dreampeppers99

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.

Qual erro deu?

ricardo13

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

Alguém tem alguma idéia do q possa estar acontecendo ??

Já troquei de versão do Pretty faces e nada mudou.

dreampeppers99

ricardo13:
Alguém tem alguma idéia do q possa estar acontecendo ??

Já troquei de versão do Pretty faces e nada mudou.


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?)

ricardo13

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.

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 ?

dreampeppers99

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 ?

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.

ricardo13

Eu crio este MB com a annotation @Component(usuarioMB)

dreampeppers99

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.

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

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>


usuarioMB!

ricardo13

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 */}
...
dreampeppers99
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}
Criado 27 de abril de 2011
Ultima resposta 29 de abr. de 2011
Respostas 19
Participantes 3