Search code examples
jsfemail-validation

Confirmation link Email in JSF


How do you make a link which you can email to users to confirm their email address is clicked in JSF? i.e. once they click on the link their account will be activated.


Solution

  • Assuming you're already on JSF 2.0, you could grab @ManagedProperty and @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?
        }
    
        // ...
    }
    

    and then in JSF which is accessed by http://example.com/activate.jsf?key=somelonggeneratedkey

    <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>