Ativação de Conta

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}