The problem stems from the availability of the Bean Validation library (bean-validator.jar). This is on the GlassFish classpath but not in Tomcat. If the library is added to the .war file running on Tomcat, the same problematic behaviour is observed.
The issue is that, if the Bean Validation framework is available, JSF will automatically detect and us it. This only appears to be the case if the specific validator tag (e.g. f:validateLength) is used. The Bean Validation library causes a different behaviour for empty fields which is not currently handled through partialSubmit in compatibility mode.
The workaround is to include the following context parameter in the web.xml file of the application:
<context-param>
<param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
<param-value>false</param-value>
</context-param>
I've added this parameter to our compat examples (compat-basic, auctionMonitor, component-showcase) and updated the documentation in the Compatibility section of the Wiki.
Still an issue on Glimmer revision 21634 + Glassfish v3
Enter name in Text Entry, and then tab out
When testing using Tomcat6.0.26, Text Entry works properly.