Validation JSF2.1.X验证在Glassfish 3.1.2和Tomcat 6&;上的表现不同;7.

Validation JSF2.1.X验证在Glassfish 3.1.2和Tomcat 6&;上的表现不同;7.,validation,tomcat,jsf-2,glassfish,Validation,Tomcat,Jsf 2,Glassfish,我在Tomcat和Glassfish之间的JSF验证中遇到了我认为是奇怪的行为。以前我们使用Tomcat,但现在需要运行完整的JavaEE应用服务器 在测试过程中,我注意到当向服务器提交空字段时,只要有一个长度验证器,并且没有必需的属性,Glassfish就会输出验证消息,而Tomcat只会跳过对这些元素的验证 如果提交了一个值,但验证失败,那么一切正常,只是在没有输入值的情况下提交页面 环境细节 JSF Mojarra 2.1.12 Richfaces 4.1 目标服务器Glassfis 3

我在Tomcat和Glassfish之间的JSF验证中遇到了我认为是奇怪的行为。以前我们使用Tomcat,但现在需要运行完整的JavaEE应用服务器

在测试过程中,我注意到当向服务器提交空字段时,只要有一个长度验证器,并且没有必需的属性,Glassfish就会输出验证消息,而Tomcat只会跳过对这些元素的验证

如果提交了一个值,但验证失败,那么一切正常,只是在没有输入值的情况下提交页面

环境细节
  • JSF Mojarra 2.1.12
  • Richfaces 4.1
  • 目标服务器Glassfis 3.1.2
  • 从Tomcat 7.0.27开始移动
以下是包含所述行为的代码片段:

听起来像是同一个问题,我只是看不到阻止我的环境以这种方式运行的解决方案,也看不到如何在不需要字段时禁用验证


感谢您在这方面对我的帮助。

几天前我遇到了一个非常类似的问题,我假设属性phoneArea可能是整数或长。如果是这样的话,您可以看一看,然后再看一看。

您使用的是什么JSF实现?Mojarra还是MyFaces?我已经用实现细节更新了问题正文。感谢MarkusR在这方面花费的时间,不幸的是,我的所有字段都绑定到字符串值。另外,我也不确定(仍在研究中),但如果我试图针对Tomcat,您提供的链接似乎是个问题。我们正在尝试迁移到Glassfish,从我所读到的,@BalusC似乎表明所引用的特定问题只是Tomcat的问题,而不是Glassfish的问题。但是,请让我知道;如果我误解了你提到的内容。再次感谢你!通过你的第二次推荐,我克服了这个问题。我在web.xml中添加了
javax.faces.exploration\u EMPTY\u STRING\u SUBMITTED\u VALUES\u AS\u NULL
,现在一切都正常运行了。非常感谢。然而,这在一开始似乎是可行的;如果我将上述内容添加到web.xml中——任何具有required=“true”属性的组件都不会显示验证错误消息。页面将不会发布,但用户仍然不知道为什么,因为没有显示任何消息。
<h:inputText id="phoneAreaCode"
             maxlength="3"
             size="2"
             value="#{bean.phoneArea}"
             style="margin-left: 8px;">
    <f:validateLength minimum="3"/>
    <f:validator validatorId="phoneValidator"/>
    <a4j:ajax/>
</h:inputText>