JSF中的确认链接电子邮件

JSF中的确认链接电子邮件,jsf,email-validation,Jsf,Email Validation,如何创建一个链接,通过电子邮件发送给用户,以确认在JSF中单击了他们的电子邮件地址?i、 e.一旦他们点击链接,他们的帐户将被激活。您可以通过创建一个页面(.jsp for ex)来实现它,该页面具有: <f:view beforePhaseListener="#{userActivationController.performActivation}"> (这是针对facelets的;对于jsp,属性仅为beforePhase)。然后,在托管bean的方法中,使用FacesCo

如何创建一个链接,通过电子邮件发送给用户,以确认在JSF中单击了他们的电子邮件地址?i、 e.一旦他们点击链接,他们的帐户将被激活。

您可以通过创建一个页面(.jsp for ex)来实现它,该页面具有:

<f:view beforePhaseListener="#{userActivationController.performActivation}">

(这是针对facelets的;对于jsp,属性仅为
beforePhase
)。然后,在托管bean的方法中,使用
FacesContext.getCurrentContext().getExternalContext().getParameterMap()
获取请求参数并获取激活代码,其传递方式如下:


假设您已经使用JSF2.0,您可以获取
@ManagedProperty
@PostConstruct

@ManagedBean
@RequestScoped
public class Activation {

    @ManagedProperty(value="#{param.key}")
    private String key;
    private boolean valid;

    @PostConstruct
    public void init() {
        valid = check(key); // And auto-login if valid?
    }

    // ...
}
然后在JSF中,由


您的帐户已成功激活

转到主页

激活失败!请输入您的电子邮件地址以重试。

...
这正是我需要的。谢谢你+1个简短的问题。代码需要长且唯一。java有办法生成像BalusC那样的长的唯一序列吗?我认为Java随机数生成器不能保证uniqueness@Harry:使用:
String uuid=uuid.randomUUID().toString()
@BalusC,我知道我是这个问题已经有四年了,但是请解释一下
{param.key}
在这种情况下的意思?(是否必须是
param
?)@Buhake:
<h:panelGroup layout="block" rendered="#{activation.valid}">
   <p>Your account is successfully activated!</p>
   <p><h:link outcome="home">Go to home page</h:link></p>
</h:panelGroup>
<h:panelGroup layout="block" rendered="#{!activation.valid}">
   <p>Activation failed! Please enter your email address to try once again.</p> 
   <h:form>
       ...
   </h:form>
</h:panelGroup>