【问题标题】:Empty fields are validated on one environment but not on other environment空字段在一个环境中验证,但在其他环境中不验证
【发布时间】:2011-12-09 13:32:49
【问题描述】:

我在两个环境中部署了相同的 JSF 战争,这两个环境显然是相同的(Weblogic 10.3.3)。 web.xml 中没有 javax.faces.VALIDATE_EMPTY_FIELDS 的条目。 在其中一种环境中,验证器在空字段上被调用,而在另一种环境中则没有。 JSF 战争和应用程序代码完全相同。

JSF 规范版本为 2.0,实现版本为 1.0.0.0_2-0-2。我知道我可以在 web.xml 中添加参数javax.faces.VALIDATE_EMPTY_FIELDS 以确保所有环境中的行为相同,但我想知道为什么它们有不同的默认行为?是否可能与在一个环境中而不是在另一个环境中存在 JSR 303 验证有关?如何检查?

【问题讨论】:

  • 你到底在说什么验证器? JSF required="true"?还是 JSR303 @NotNull?或者特定于休眠验证器的@NotEmpty@NotBlank
  • 我说的是在 JSF 页面中使用 f:validator 定义的验证器。

标签: jsf-2 bean-validation


【解决方案1】:

如果实现 jar 在类路径中,则自动启用 JSR 303 验证。

【讨论】:

  • 谢谢谢,我会检查并回复。
  • 我应该寻找什么实现 jar?当我搜索名称中包含“valid”的 jar 文件时,我只能在类路径中找到 commons-validator.jar。
  • 有没有办法以编程方式检查环境中是否存在 JSR-303 验证?
  • 在我的例子中是 hibernate-validator-4.2.0.jar。我不知道如何检查是否为 JSF 2.0 启用了 JSR-303,但是您可以通过 ServiceLoader.load(ValidationProvider.class) 获取所有验证提供程序。您可以将 context init-parameter javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR 设置为 true 以禁用 bean 验证器。
猜你喜欢
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多