如何创建一个链接,您可以通过电子邮件发送给用户以确认他们的电子邮件地址是否已在JSF中单击?即一旦他们点击链接,他们的帐户就会被激活。
答案 0 :(得分:17)
假设您已使用JSF 2.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?
}
// ...
}
然后在http://example.com/activate.jsf?key=somelonggeneratedkey
访问的JSF中<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>
答案 1 :(得分:6)
您可以通过创建具有以下内容的页面(.jsp for ex)来实现它:
<f:view beforePhaseListener="#{userActivationController.performActivation}">
(这适用于facelets;对于jsp,属性只是beforePhase
)。然后,在托管bean的方法中使用FacesContext.getCurrentContext().getExternalContext().getParameterMap()
获取请求参数并获取激活码,其传递方式如下: