9

你如何制作一个链接,你可以通过电子邮件发送给用户以确认他们的电子邮件地址在 JSF 中被点击?即,一旦他们点击链接,他们的帐户就会被激活。

4

2 回答 2

19

假设您已经在 J​​SF 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>
于 2010-07-21T01:34:43.293 回答
6

您可以通过创建具有以下内容的页面(例如 .jsp)来实现它:

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

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

http://yoursite.com/activate.jsp?code=54gfd54tgdgfd

于 2010-07-20T23:42:48.370 回答