Q:

Do I really need to check for null in Validators? 

I read somewhere that as of JSF 2.0, validator routines are required to properly handle the condition where the value parameter is null.   So I just wrote this validate method that looks like this:
public void validateTandC(FacesContext context, UIComponent source, Object value) {
    if (value == null || !( value instanceof Boolean)) {
        FacesMessage fm = new FacesMessage(FacesMessage. SEVERITY_ERROR, 
                "Terms and Conditions Not Accepted", "Value Not Present");
        throw new ValidatorException(fm);
    }
    if (((Boolean) value) ! = true) {
        FacesMessage fm = new FacesMessage(FacesMessage. SEVERITY_ERROR,
                "Terms and Condistions Not Accepted",
                "You must check the box that confirms you accept the Terms and Condtions ");
        throw new ValidatorException(fm);
    }
}

This is a rather tedious construction, given that this method is ONLY referred to in an associated page and ONLY from a single h:selectBooleanCheckbox.   If that is the case why would the first if statement ever resolve to true?    Would an NPE ever happen in real life if I didn't have it? 

A:

As a matter of fact, a property which is binded to <h:selectBooleanCheckbox> component will never be null.  If you don't check the box, it will be false and vice versa.  Hence, you don't need to check for null in your Validator. 
Besides, for any other UIInput components, I believe you can simply set their required attribute to true and null case will automatically be handled for you.  For example,
<h:inputText id="myInput" required="true" requiredMessage="Hey yo!  Type something here." / >
<h:message for="myInput" />

If a user missed the above text box, he would see Hey yo!  Type something here.  message after clicking submit.