The reason for the inconsistency is that in JSF2, null
values do not fail validation by default. From the Javadocs:
For a validator to be fully compliant with Version 2 and later of the specification, it must not fail validation on null or empty values unless it is specifically intended to address null or empty values
To support the validation behaviour from JSF1.2, use the javax.faces.VALIDATE_EMPTY_FIELDS
context parameter:
<context-param>
<param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
<param-value>false</param-value>
</context-param>