gpt4 book ai didi

validation - JSF 2.1.X 验证在 Glassfish 3.1.2 与 Tomcat 6 & 7 上的行为不同

转载 作者:行者123 更新时间:2023-11-28 23:04:13 24 4
gpt4 key购买 nike

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

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

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

环境细节

  • JSF Mojarra 2.1.12
  • Richfaces 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. 如果没有提供值,则不进行验证,允许页面提交

用例(Glassfish):

  1. 同上

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

我通过 <f:validator/> 看到自定义验证器的这种行为标签以及内置标签,如 <f:validateLength/> .

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

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

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

最佳答案

几天前我遇到了一个非常相似的问题,我假设属性 phoneArea 可能是一个 Integer 或 Long。如果是这样,你可以看看this topic另外在 this one .

关于validation - JSF 2.1.X 验证在 Glassfish 3.1.2 与 Tomcat 6 & 7 上的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com