0

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

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

如果提交了一个值但验证失败,一切正常,这只是在没有输入任何值并提交页面时。

环境细节

  • JSF 莫哈拉 2.1.12
  • 富脸 4.1
  • 目标服务器 Glassfis 3.1.2
  • 从 Tomcat 7.0.27 迁移

这是包含所描述行为的代码片段:

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

用例(Tomcat):

  1. 如果提供了值,则会进行验证。如果值通过验证,则允许页面提交,如果失败,则向页面输出错误消息。

  2. 如果没有提供值,则不进行验证,并允许页面提交

用例(玻璃鱼):

  1. 和上面一样

  2. 如果没有提供值,验证仍然会发生,并且显然会失败。

我看到自定义验证器通过<f:validator/>标签以及像<f:validateLength/>.

没有代码差异,只是运行代码的服务器。我已经搜索了谷歌,但我并没有真正找到任何帮助。我不了解有关验证的内容吗?你看有什么不对吗?

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

感谢任何人帮助我解决这个问题。

4

1 回答 1

1

几天前我遇到了一个非常相似的问题,我认为属性 phoneArea可能是整数或长整数。如果是这样,你可以看看这个话题,另外看看这个

于 2012-10-01T19:46:51.390 回答