【发布时间】:2011-03-18 17:42:37
【问题描述】:
您如何创建一个链接,您可以通过电子邮件发送给用户以确认他们的电子邮件地址在 JSF 中被点击?即,一旦他们点击链接,他们的帐户就会被激活。
【问题讨论】:
标签: jsf email-validation
您如何创建一个链接,您可以通过电子邮件发送给用户以确认他们的电子邮件地址在 JSF 中被点击?即,一旦他们点击链接,他们的帐户就会被激活。
【问题讨论】:
标签: jsf email-validation
您可以通过创建一个页面(例如.jsp)来实现它:
<f:view beforePhaseListener="#{userActivationController.performActivation}">
(这是用于facelets;对于jsp,属性只是beforePhase)。然后,在托管 bean 的方法中使用FacesContext.getCurrentContext().getExternalContext().getParameterMap() 获取请求参数并获取激活码,传递如下:
【讨论】:
假设您已经使用 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>
【讨论】:
java.util.UUID:String uuid = UUID.randomUUID().toString();。
#{param.key} 在这种情况下的含义? (必须是param吗?)